首页 > 解决方案 > 如何使用 IntelliJ 读取属性文件

问题描述

我有一个 Spring Boot 服务,我正在使用 IntelliJ 来运行它。我的文件夹中有一个文件调用“ application.propertiesresources。我想让 IntelliJ 读取该.properties文件,我该怎么做?我让它使用 .properties 文件中的属性的唯一方法是将它们直接添加到 Environment VM Option 中。

我尝试做类似的事情, -Dspring.config.location:/src/main/resources/application.properties但这不起作用。

文件夹结构:

Services
 -src
   -main
     -resources
       -application.properties
 -target
 -pom.xml

@Component
@Configuration
@EnableAutoConfiguration
@PropertySource({ "classpath:application.properties"})
@EntityScan(basePackages = "com.org")
public class AppConfig {

}

标签: javaspring-bootintellij-idea

解决方案


在 Spring Boot 的情况下,启动启动应用程序时不必传递任何选项。

当 Spring 启动应用程序加载时,它会自动检查属性文件是否存在于某些位置,包括src/main/resources, src/main/resources/config.

如果您将属性文件保存在这些文件夹中,应用程序会自动获取文件并注册属性。所以在你的AppConfig你不需要@Component, @EnableAutoConfiguration, @PropertySource, 并且@EntityScan因为@Configuration已经包含@Component了哪些使@Value能工作。

我认为当您在构造函数中调用属性时可能会出现问题,AppConfig因为在构造类时@Value尚未注入。

如果要检查属性值是否是由 Spring 注入的,可以在应用程序类中做一个小测试,如下所示

@SpringBootApplication
public class ApppropApplication {

    @Autowired
    private AppConfig appConfig;

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

    @PostConstruct
    public void init(){
        System.out.println(appConfig.getTestProperty());
    }
}

如果您的问题仍然存在,最好提供更多信息(错误日志和整个类结构)

希望这可以帮助!快乐编码:)


推荐阅读