Spring boot jsp 和 application.yml
Posted
技术标签:
【中文标题】Spring boot jsp 和 application.yml【英文标题】:Spring boot jsp and application.yml 【发布时间】:2017-04-04 21:08:36 【问题描述】:我为一个项目使用基于 application.yml 的 spring-boot。作为示例项目,我使用 https://github.com/ghillert/spring-boot-jsp-demo/blob/master/jsp-demo-tomcat/src/main/resources/application.properties 到目前为止效果很好。
我很勇敢地从 application.properties
更改设置spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
到
spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp
不幸的是,更改属性后,示例不再起作用。是否可以像我在 application.yml 中那样配置给定的属性?或者我该如何配置设置?
【问题讨论】:
为什么不能使用 .yml 而不是 .properties? 该项目已经迁移到使用 yml 文件 :-( 并且它仅适用于 jsp 部分而不是 @TechBreak 不正是 OP 想要做的事情吗? @eis 我对文件名感到困惑。应用程序.properties @TechBreak - 在第一篇文章中我有一个拼写错误。 【参考方案1】:在 Spring-Boot 1.3 中,属性名称从 spring.view.prefix 更改为 spring.mvc.view.prefix。确保使用正确的名称。
当您处于 Spring-Boot 独立模式时,还要确保对 org.apache.tomcat.embed:tomcat-embed-jasper 的依赖没有标记为 provided。否则 JspServlet 将不会在 TomcatEmbeddedServletContainerFactory 中注册为 Servlet-Mapping,因为它不在类路径中。
【讨论】:
【参考方案2】:你需要在你的src/main/resources
文件夹中创建application.yml
文件(你的项目中现在有application.properties
,需要删除),应该如下图:
spring:
mvc:
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
P.S.:确保缩进完全一样,否则如果你使用制表符,你会得到像 'found character '\t(TAB)' 这样的异常,不能开始任何标记。 (不要使用 \t(TAB) 进行缩进)'
【讨论】:
IDE 应该能够为您设置“制表符到空格”,因此使用 Tab 键应该没问题。【参考方案3】:我认为您应该在这里使用弹簧功能,
即YamlPropertiesFactoryBean
YamlPropertiesFactoryBean 会将 YAML 作为属性加载。
如果有帮助,请查看此链接,
How to use YamlPropertiesFactoryBean to load YAML files using Spring Framework 4.1?
【讨论】:
就 Spring 而言,是的。然而,OP 正在使用 Spring Boot,supports YAML out of the box. @eis 同意,但如果没有选择资源,那么通过从类路径中显式放置所需文件可能会很方便?以上是关于Spring boot jsp 和 application.yml的主要内容,如果未能解决你的问题,请参考以下文章
从零开始的Spring Boot(4Spring Boot整合JSP和Freemarker)
spring boot thymeleaf和jsp可以共存吗