有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    因为Spring正在寻找类型为SpringTemplateEngine或任何其他子类型的bean。所以需要将public TemplateEngine templateEngine(TemplateResolver templateResolver)中的返回类型更改为SpringTemplateEngine或其子类