如何使用IntelliJ读取属性文件

时间:2018-10-01 23:00:39

标签: java spring-boot intellij-idea

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

}

2 个答案:

答案 0 :(得分:3)

对于Spring Boot,启动启动应用程序时不必传递任何选项。

Spring引导应用程序加载后,会自动检查属性文件是否存在于某些位置,包括src/main/resourcessrc/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());
    }
}

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

希望这会有所帮助!快乐编码:)

答案 1 :(得分:0)

springboot项目包含属性文件的理想方法是在入门类中使用注释“ @PropertySource”导入。请重新检查您的入门班。它应该在下面包含这样的内容

@PropertySource({ "classpath:application-example.properties"})
@EntityScan(basePackages = "com.org")

public class YourProjectLauncher extends SpringBootServletInitializer {

@Value("${your.db.url}")
private transient String dataSourceUrl;

@Value("${your.db.username}")
private transient String userName;

@Value("${your.db.password}")
private transient String password;

@Value("${your.db.driver-class-name}")
private transient String driverClass;

public static void main(String... args) {

    SpringApplication.run(YourProjectLauncher.class, args);
}

让我知道您是否已经这样做并且仍然面临问题。

此外,最好在问题中添加入门类,这样可以更轻松地分析您面临的问题。

注意-如果您已经完成此操作,请在问题中添加更多信息,将很乐意为您提供帮助。