【问题标题】:Spring Boot not using application.properties for spring.groovy.template.cacheSpring Boot 未将 application.properties 用于 spring.groovy.template.cache
【发布时间】:2015-06-29 14:12:05
【问题描述】:

我有一个非常简单的 Spring Boot 应用程序,其类如下详述。

我的问题在于 application.properties 文件以及它们如何自动配置。我试图通过设置'spring.groovy.template.cache:false'来让Groovy模板在开发中更新,但这不起作用。我添加了另外两个属性以查看是否正在读取 application.properties 文件。 'logging.level.org.springframework.web: ERROR' 仍然会导致 INFO 级别的消息打印到控制台。但是, some.prop 在应用程序启动时被正确读入 MyBean 类。

这些属性是否缺少我的配置声明?

src/main/resources/application.properties:

spring.groovy.template.cache: false
logging.level.org.springframework.web: ERROR
some.prop: bob

src/main/java/sample/MyBean.java:

@Component
public class MyBean {

    @Value("${some.prop}")
    private String prop;

    public MyBean() {}

    @PostConstruct
    public void init() {
        System.out.println("================== " + prop + "================== ");
    }
}

和 src/main/java/sample/Application.java:

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

和 src/main/java/sample/com/example/MainController.java

@Controller
public class MainController {

    @RequestMapping(value="/login", method = RequestMethod.GET)
    public ModelAndView risk(@RequestParam Optional<String> error) {
        return new ModelAndView("views/login", "error", error);
    }

}

【问题讨论】:

  • 我没用过“:”,可能有些参数不接受,需要用“=”代替?
  • Marged 是对的。冒号与 YAML 一起使用,属性文件需要等号
  • 它们的工作方式应该完全相同。事实上,Github 上的 springboot 示例项目(spring-boot/spring-boot-samples/spring-boot-sample-web-groovy-templates)在其 application.properties 文件中使用了 ':'。但是,我进行了测试,但使用 '=' 仍然无法正常工作。
  • 您是只使用自动配置还是有一些自定义配置会干扰/禁用自动配置?
  • 不应该有任何禁用或干扰的东西。 Application.java 是我拥有的除一个控制器之外的唯一 src 文件(使用控制器编辑的问题)。

标签: spring groovy spring-boot


【解决方案1】:

您似乎错过了扫描您的包裹“样本”。请确保您已对其进行扫描。

@ComponentScan({
     "sample" })
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

另外,您的 application.properties 是正确的。没问题。

【讨论】:

    【解决方案2】:

    看来解决方案比我想象的要简单得多:

    gradle bootRun 
    

    应该用于热重载模板

    gradle run 不起作用(所有编译的类都只是内置在 build/ 中)

    【讨论】:

      猜你喜欢
      • 2016-03-04
      • 2021-02-07
      • 1970-01-01
      • 2018-05-07
      • 2014-11-04
      • 1970-01-01
      • 2021-10-25
      • 2017-08-07
      • 2018-07-20
      相关资源
      最近更新 更多