当前位置: 首页 > 知识库问答 >
问题:

没有“org.Thymeleaf.Spring4.SpringTemplateEngine”类型的合格bean可用

邹嘉荣
2023-03-14

我尝试构建简单的Maven springMVC应用程序。当我试图将应用程序部署到我的服务器时,下面抛出了异常。

unsatisfiedDependencyException:创建com.phapp.comfiguration.webconfiguration中定义的名为“View Resolver”的bean时出错:通过方法“View Resolver”参数0表示未满足的依赖关系;嵌套异常是org.springframework.beans.factory.NosuchBeanDefinitionException:没有类型为'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>

我的springmvc版本是4.3.7.release。

我验证了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[] {"/"};
    }
}
@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;
    }
}

没有“org.Thymeleaf.Spring4.SpringTemplateEngine”类型的合格bean可用:

共有1个答案

西门品
2023-03-14

因为Spring正在查找类型为SpringTemplateEngine或任何其他子类型的bean。因此,您需要将Public TemplateEngine TemplateEngine(TemplateResolver TemplateResolver)中的返回类型更改为SpringTemplateEngine或它的子类。

 类似资料: