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

Spring boot如何将Thymeleaf视图解析器放入其bean容器

冀冯浩
2023-03-14

它是一个spring boot项目,网页由Thymeleaf呈现。当我将spring-boot-starter-thymeleaf放入pom.xml并启动applicaiton时,它试图在其容器中找到实现ViewResolver的所有bean。你看到这里,它找到ThymeleaFviewResolver。

我只是好奇Spring boot何时以及如何将这个ThymeleafViewResolver类放入它的bean容器中?

共有1个答案

文喜
2023-03-14

这是由于SpringBoot的自动配置特性,它将根据不同的条件自动动态创建bean,例如,是否可以从类路径中找到库,或者开发人员是否已经定义了某种类型的bean等等。

如果通过在application.properties中放置debug=true来打开调试模式,它将在应用程序启动期间打印出一个报告,说明哪些bean是由于哪些条件而自动创建的。

spring-boot-starter-thymeleaf的示例中,您可以从报告中找到以下内容:

ThymeleafAutoConfiguration.ThymeleafWebMvcConfiguration.ThymeleafViewResolverConfiguration#thymeleafViewResolver matched:
                  - @ConditionalOnMissingBean (names: thymeleafViewResolver; SearchStrategy: all) did not find any beans (OnBeanCondition)
@Bean
@ConditionalOnMissingBean(name = "thymeleafViewResolver")
public ThymeleafViewResolver thymeleafViewResolver() {
    ThymeleafViewResolver resolver = new ThymeleafViewResolver();
    resolver.setTemplateEngine(this.templateEngine);
    resolver.setCharacterEncoding(this.properties.getEncoding().name());
    //.......   
    return resolver;
}

您可以发现ThymeleAfviewResolver属于ThymeleAfviewResolver的类型,而@ConditionalOnMissingBean这里表示只有在尚未定义ThymeleAfviewResolver类型的bean时才会创建此bean。

 类似资料:
  • MVC提供的配置简化了视图解析器的注册工作。 以下的代码展示了在MVC Java编程配置下,如何为内容协商配置FreeMarker HTML模板和Jackson作为JSON数据的默认视图解析: @Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { @Override

  • 问题内容: 鉴于以下HTML: 我想坚持到底。 不使用绝对定位就可以实现吗?如果float属性支持’bottom’的值,那似乎可以解决问题,但是不幸的是,事实并非如此。 问题答案: 可能不会。 分配给,然后分配给。

  • 主要内容:视图,视图的分类,视图解析器,同时配置多个视图解析器,视图控制器Spring MVC 的控制器方法支持 ModelAndView、ModelMap、View、String 多种类型的返回值,但无论控制器方法的返回值是哪种类型,Spring MVC 内部最终都会将它们封装成一个 ModelAndView 对象。 ModelAndView 对象由 model(模型数据)和 view(视图)两部分组成,但这里的 view 通常并不是一个真正的 View 视图对象,而

  • 我想在HTML中显示一个请求的对象,我得到了一个错误,我不知道是什么原因导致了我的错误。谷歌帮不上忙,现在我试着问你。我认为错误不是来自我的表,因为我把它注释掉了,错误仍然是Occour。该错误也不是来自“http://localhost:8081/simulation”,因为我使用有效值重新接收了一个有效的JSON。谢谢你的帮助:)。 下面是我的代码: 我通过调用“http://localhos

  • 我正试图按照本教程将thymeleaf添加到springboot应用程序中,但我似乎无法让它工作。辅导的:http://spr.com/part-2-adding-views-using-thymeleaf-and-jsp-if-you-want/ 当我在LoginController中使用@RestController启动应用程序时,我能够让springstart正常工作,但是当我将@RestC

  • 问题内容: 我知道使用ZF1,您将使用自定义View Helpers检索模块/控制器名称,该自定义View Helpers将获得单例frontController对象并在那里获取名称。 使用ZF2消除了框架的单例性质,并引入了DI,其中我为该模块中的所有控制器指定了别名…我可以想象我可以通过访问DI或注入DI来获得它当前名称进入布局。 任何人都知道您将如何做。我猜有一百种不同的方式,但是在嗅探了几