springboot偏好使用java class类型的来引入配置属性,也就是将properties、json、YML格式的配置文件读取到class中生成全局bean来使用,当然考虑到历史原因,还保留读取xml格式资源文件的能力。
属性配置到一个class中
- 创建一个独立的class,包含全部的属性,通过@Configuration注解该class声明为配置类,然后再通过@Value将resources中的配置文件中的属性值注入该类,或者通过@ConfigurationProperties(prefix = "oss")将某个属性对象下的子属性注入该类对应的同名字段
@Data
@Configuration
@ConfigurationProperties(prefix = "oss")
public class OssConf {
@Value("${key1}")
private String key1;
@Value("${key2}")
private String key2;
private String endpoint;
private String accessKeyId;
private String accessKeySecret;
private String bucketName;
}
- 导入xml格式配置文件
通过@ImportResource声明可以将xml格式的配置文件导入进容器。
bean的配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="helloService" class="com.chentongwei.springboot.service.HelloService"></bean>
</beans>
通过xml导入将bean注册到容器
@SpringBootApplication
@ImportResource(locations = {"classpath:beans.xml"})
public class Springboot02ConfigApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot02ConfigApplication.class, args);
}
}
- 自动配置
可以通过@EnableAutoConfiguration声明自动配置,但是建议在每个配置class上以@Configuration明确声明配置类。
网友评论