java - 如何使用 IntelliJ 读取属性文件

标签 java spring-boot intellij-idea

我有一个 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/resourcessrc/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/

相关文章:

Java SSL 握手异常 "no cipher suites in common"

java - @Repository count 查询 - 方法executeUpdate 不能用于查询

java - 如何获取不终止的代码中最后执行的方法?

java - Spring 带注释的 Controller 可以工作,但路由器/处理程序方法似乎无法从 *ServerRequest* 检索 *Mono<>*

java - 使用 IAM 角色从 Java 访问 AWS S3

java - 使用 DefaultIntervalXYDataset() 的动态 XYBarChart

spring-boot - 如何使用 Netflix Zuul 进行金丝雀发布和动态路由?

java - 在mockito中模拟方法返回空指针异常?

java - Android Studio Chipmunk 自动创建模块后无法解析测试中的生产代码

java - 对于 IntelliJ,与仅导入 Gradle 项目相比,是否有任何理由导入 Eclipse 项目?