java - 如何使用 IntelliJ 读取属性文件
问题描述
我有一个 Spring Boot 服务,我正在使用 IntelliJ 来运行它。我的文件夹中有一个文件调用“ application.properties
” resources
。我想让 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 {
}
解决方案
在 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());
}
}
如果您的问题仍然存在,最好提供更多信息(错误日志和整个类结构)
希望这可以帮助!快乐编码:)
推荐阅读
- reactjs - 为什么我不能在我的项目中直接使用 React refs 操作 DOM?
- passenger - 作为 NGINX 模块加载的乘客 6.0.8 无法启动
- python - 如何在熊猫数据框中获取日期范围内的部分数据(也是索引)?
- html - 为什么我的图像不能在 HTML 中正确显示?
- html - 如何在div的末尾留下输入
- python-3.x - 如何在不调用函数的情况下将参数绑定到函数
- c# - Async/Await with Task.Run UI 在没有 thread.sleep 的情况下冻结
- c# - dotnet-counters ps 和任务管理器之间关于 PID 的区别
- python - 如何运行从 1 到 19 的循环以生成输出并在 python 中打印绘图
- java - 将 ARCore 添加到项目时出错:验证程序拒绝了 com.google.ar.core.ArImage 类:android.media.Image$Plane[]