SpringBoot读取配置文件
1、springboot的配置文件默认为application.properties。springboot启动时会自动加载根目录下的application.properties文件
2、如果参数配置直接放在application.properties中,则可以使用@Component和@Value注解搭配使用。
如果不想在每个属性上都使用@Value注解,则可以使用@ConfigurationProperties(prefix = “home”)注解,该注解必须需要指定prefix前缀,配置文件中的名字要和类中的属性名保持一致,属性要提供get/set方法。
使用@ConfigurationProperties注解时,必须要搭配@Component或者@EnableConfigurationProperties使用(它们的作用就是将 配置注入容器),否则仅仅使用@ConfigurationProperties是无法被spring管理的
sprintBoot1.5之后,@ConfigurationProperties取消了location,所以需要引入依赖包:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
3、如果想读取自定义的配置文件,则需要使用@PropertySource(“classpath:/xxx.properties”)手动指定要读取的配置文件。同时可以搭配@Value或者@ConfigurationProperties注解使用
4、如果想根据不同的环境来读取不同的配置文件,可以使用spring.profiles.active属性
在springboot中多环境的配置文件名需要按照application-{pfofile}.properties的格式来命名,其中{profile}就是对应的环境标识,如:
- application-dev.properties
- application-test.properties
- application-prepro.properties
- application-pro.properties
需要加载哪个配置文件,就在application.properties配置文件中通过spring.profiles.active来设置。spring.profiles.active=dev,即表示加载application-dev.properties配置文件。若加载多个配置文件,则用逗号隔开spring.profiles.active=dev,test,pro
5、@import注解:将一个或多个类注入ioc中,交给spring管理
public class A{
}
public class B{
}
@Import({A.class,B.class})
@Configuration
public class C {
}
对应的A和B就会被spring管理了
6、@ImportResource
加载外部的xml文件@ImportResource(locations = { “classpath:bean.xml” })