Java 没有类型为'的合格bean;org.thymeleaf.spring4.SpringTemplateEngine';可获得的

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

我尝试构建简单的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依赖项

<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;
    }
}