java没有“org”类型的合格bean。百里香。春天4。SpringTemplateEngine’可用
我尝试构建简单的Maven springMVC应用程序。当我试图在下面的服务器上部署应用程序时,会引发异常
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'viewResolver' defined in com.phapp.configuration.WebConfiguration: Unsatisfied dependency expressed through method 'viewResolver' parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.thymeleaf.spring4.SpringTemplateEngine' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
下面是我对maven thymeleaf的依赖
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring4</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
我的springmvc版本是4.3.7。释放
我验证了我的maven依赖项是否包含在部署程序集中。 我正在使用java配置创建springmvc
*
@Configuration
public class PhAppDispatcherServlet extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] {RootConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[]{WebConfiguration.class};
}
@Override
protected String[] getServletMappings() {
return new String[] {"/"};
}
}
*
我的rootconfig类
@Configuration
public class RootConfig { }
我的网络配置课
@Configuration
@EnableWebMvc
@ComponentScan(basePackages={"com.phapp"},excludeFilters = {@Filter(type=FilterType.ANNOTATION,value = EnableWebMvc.class)})
public class WebConfiguration extends WebMvcConfigurerAdapter{
@Bean
public ViewResolver viewResolver(SpringTemplateEngine templateEngine) {
ThymeleafViewResolver thymeleaf = new ThymeleafViewResolver();
thymeleaf.setTemplateEngine(templateEngine);
return thymeleaf;
}
@Bean
public TemplateEngine templateEngine(TemplateResolver templateResolver){
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
return templateEngine;
}
@Bean
public TemplateResolver templateResolver(){
TemplateResolver templateResolver = new ServletContextTemplateResolver();
templateResolver.setPrefix("WEB-INF/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("HTML5");
return templateResolver;
}
}
为什么服务器找不到SpringTemplateEngine bean
没有“org”类型的合格bean。百里香。春天4。SpringTemplateEngine’可用:
# 1 楼答案
因为Spring正在寻找类型为
SpringTemplateEngine
或任何其他子类型的bean。所以需要将public TemplateEngine templateEngine(TemplateResolver templateResolver)
中的返回类型更改为SpringTemplateEngine
或其子类