【问题标题】:Spring Boot does not load application.properties and Velocity templatesSpring Boot 不加载 application.properties 和 Velocity 模板
【发布时间】:2015-01-03 01:00:19
【问题描述】:

我有两个项目——一个基于"get started" example,第二个来自spring-boot-samples。我使用 Maven 构建并从 Eclipse 运行。 “spring-boot-samples”项目加载 application.properties 并显示控制器命名的 Velocity 模板。 “开始”没有。

application.properties (src/main/resources/application.properties) 和模板 (src/main/resources/templates/**) 的文件结构相同,两者都将 src/main/resources 设置为“用作源文件夹“在 Eclipse 中。相同的工作区,相同的 JRE。

我比较了 .classpath 和 pom.xml,但没有发现任何可疑之处。显然是有区别的,但是我该去哪里看呢?

PS:我可以通过@PropertySources 加载application.properties,但是

  • 这不是必需的(请参阅那里的 cmets)
  • 在“spring-boot-samples”项目中不是必需的
  • 对 Velocity 模板没有帮助

谢谢!

【问题讨论】:

    标签: spring-boot


    【解决方案1】:

    要在 Spring Boot 中从 application.properties 中获取值,我们需要指定一些注解。

    • application.properties 必须在路径 src/main/resources 中

    • 类必须包含@RestController注解

      @Value("${name}") 私有字符串名称;

    【讨论】:

    • - application.properties 位于 src/main/resources 下(请参阅问题文本) - 设置注释 - @Value 一直为 null 我通过添加一些无效的内容来仔细检查 application.properties 是否已加载信息给它。结果:如果 application.properties 通过 \@PropertySources 包含,则解析异常,如果尝试自动加载则没有异常...
    【解决方案2】:

    啊,一个重要的区别:

    @RestController 直接传递响应,意思是:String 不是解析模板的名称,而是传递给浏览器。原因应该是@ResponseBody:

    指示方法返回值的注解应绑定到 Web 响应正文。

    使用@Controller 来解决速度问题。

    编辑:

    要关闭这个帖子:我会继续使用@PropertySources 来获取application.properties,但是没有它就无法工作。仅在类路径中有 application.properties 是不够的。

    【讨论】:

      猜你喜欢
      • 2020-09-07
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      • 2018-07-20
      • 2017-06-18
      • 1970-01-01
      相关资源
      最近更新 更多