Java 没有类型为'的合格bean;org.thymeleaf.spring4.SpringTemplateEngine';可获得的
我尝试构建简单的Maven springMVC应用程序。当我试图在下面的服务器上部署应用程序时,引发异常 org.springframework.beans.factory.unsatifiedDependencyException: 创建中定义了名为“viewResolver”的bean时出错 com.phapp.configuration.WebConfiguration:未满足的依赖项 通过方法“viewResolver”参数0表示;嵌套异常 是org.springframework.beans.factory.NoSuchBean定义异常:否 “org.thymeleaf.spring4.SpringTemplateEngine”类型的限定bean 可用:至少需要1个符合autowire条件的bean 候选人依赖项批注:{} 下面是我的maven thymeleaf依赖项Java 没有类型为'的合格bean;org.thymeleaf.spring4.SpringTemplateEngine';可获得的,java,spring,maven,spring-mvc,Java,Spring,Maven,Spring Mvc,我尝试构建简单的Maven springMVC应用程序。当我试图在下面的服务器上部署应用程序时,引发异常 org.springframework.beans.factory.unsatifiedDependencyException: 创建中定义了名为“viewResolver”的bean时出错 com.phapp.configuration.WebConfiguration:未满足的依赖项 通过方法“viewResolver”参数0表示;嵌套异常 是org.springframework.be
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring4</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
我的网络配置类
@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.thymeleaf.spring4.SpringTemplateEngine”类型的合格bean可用:,因为Spring正在寻找类型为
SpringTemplateEngine
或任何其他子类型的bean。因此,您需要将public TemplateEngine TemplateEngine(TemplateResolver templateesolver)
中的返回类型更改为SpringTemplateEngine
或其子类。根据您的方法,您有一个TemplateEngine
而不是SpringTemplateEngine
。在类路径中可能有两个不同版本的spring。因为2.1.3.RELEASE提供了spring 4.0.0.RELEASE,您可以手动添加spring 4.3.7.RELEASE感谢M.Deinum。。当我改变返回SpringTemplateEngine的方法时,它工作了。
@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;
}
}