我有一个 Spring Boot 服务,并且我正在使用 IntelliJ 来运行它。我的 resources
文件夹中有一个名为“application.properties
”的文件。我希望 intelliJ 读取 .properties
文件,我该怎么做?我让它使用 .properties 文件中的属性的唯一方法是将它们直接添加到环境 VM 选项中。
我尝试做类似的事情
-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 {
}
最佳答案
对于 Spring Boot,启动引导应用程序时无需传递任何选项。
当Spring boot应用程序加载时,它会自动检查某些位置是否存在属性文件,包括src/main/resources
、src/main/resources/config
。
如果您将属性文件保存在这些文件夹中,应用程序会自动选取这些文件并注册属性。因此,在您的 AppConfig
中,您不需要 @Component
、@EnableAutoConfiguration
、@PropertySource
和 @EntityScan
因为 @Configuration
已经包含 @Component
,它使 @Value
能够工作。
我认为当您在 AppConfig
的构造函数中调用该属性时可能会出现问题,因为在构造类时,@Value
尚未注入(inject)。
如果你想检查属性值是否是由 Spring 注入(inject)的,你可以在应用程序类中进行一个小测试,如下所示
@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());
}
}
如果您的问题仍然存在,最好提供更多信息(错误日志和整个类结构)
希望这有帮助!快乐编码:)
关于java - 如何使用 IntelliJ 读取属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52599990/