详解@ConfigurationProperties实现原理与实战
什么是@ConfigurationProperties
@ConfigurationProperties是Spring Boot提供的一种基于类型安全的配置方式。它可以方便地将properties文件中的属性映射到Java Bean中。可以通过@ConfigurationProperties注解注入到某个类中,实现对其属性的配置。
@ConfigurationProperties实现原理
@ConfigurationProperties主要采用了Spring Boot的核心框架Spring Framework的Environment API,与注解@Value的实现不同,@ConfigurationProperties更加注重对象的配置,而@Value注重的是具体的值的注入。
@ConfigurationProperties需要绑定一个配置文件,通过@ConfigurationProperties注解中value属性指定绑定的前缀,Spring Boot会自动将该前缀下的所有属性值与该类的属性进行数据绑定。
与注解@Value不同,@ConfigurationProperties支持的数据类型不仅仅是字符串,它可以支持各种Java Bean中的基本数据类型,常用的有String、int、long、double、boolean等。
@ConfigurationProperties使用示例
例1:使用@ConfigurationProperties绑定.properties文件
首先在项目中添加一个目录src/main/resources
,在该目录下添加一个文件test.properties
,写入以下内容:
com.example.user.name=lucy
com.example.user.age=18
然后创建一个属性类UserProperties
,通过@ConfigurationProperties将配置文件中的属性全部映射到该类中:
@ConfigurationProperties(prefix = "com.example.user")
public class UserProperties {
private String name;
private int age;
// 添加getter、setter方法
}
最后在Spring Boot应用程序的配置类上使用@EnableConfigurationProperties注解使得UserProperties类可以被Spring Boot容器扫描,可以直接注入到需要使用的类中。
@Configuration
@EnableConfigurationProperties(UserProperties.class)
public class AppConfig {
@Autowired
private UserProperties userProperties;
// 其他方法
}
这样,就可以在其他类中直接注入UserProperties对象,获取其中的属性值。
例2:使用@ConfigurationProperties绑定.yml文件
与.properties文件相似,可以使用@ConfigurationProperties注解来绑定.yml文件。以一个简单的例子来说明:
server:
name: localhost
port: 8080
创建一个属性类ServerProperties
:
@ConfigurationProperties(prefix = "server")
public class ServerProperties {
private String name;
private int port;
// 添加getter、setter方法
}
然后在Spring Boot应用程序的配置类上使用@EnableConfigurationProperties注解使得ServerProperties类可以被Spring Boot容器扫描,可以直接注入到需要使用的类中:
@Configuration
@EnableConfigurationProperties(ServerProperties.class)
public class AppConfig {
@Autowired
private ServerProperties serverProperties;
// 其他方法
}
这样,就可以在其他类中直接注入ServerProperties对象,获取其中的属性值。
总结
@ConfigurationProperties的使用非常方便,可以快速获取.properties或.yml文件中的配置属性,并将其绑定到Java Bean中,可以在后续的开发中便捷地调用和传递参数。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解@ConfigurationProperties实现原理与实战 - Python技术站