spring boot中关于获取配置文件注解的使用@ConfigurationProperties、@Value、@PropertySource

spring boot中关于获取配置文件注解的使用@ConfigurationProperties、@Value、@PropertySource

@ConfigurationProperties

  • 作用:@ConfigurationProperties一般添加在实体类上,会将默认配置文件中设置的值按照键值对应的关系自动映射到实体类中
    例如:
#配置文件内容
person:
    age: 18
    name: 张三
    man: true
    birthday: 1997/03/19
    map: {k1: 11,k2: 22,k3: 33}
    list:
      - 李四
      - 王五
      - 张二麻
//实体类
@Component
@ConfigurationProperties( prefix = "person")
public class Person {
    private String name;
    private Integer age;
    private boolean man;
    private Date birthday;

    private Map<String, String> map;
    private List<String> list;

  1. 需要注意的是,实体类需要加上 @Componen,这个注解的作用相当于把当前类交给spring容器来进行管理,spring才可以将配置文件中的内容映射进来
  2. ConfigurationProperties注解中prefix属性的作用是指定当前类需要绑定的是配置文件中哪个一级标题下的内容

@Value

  • 作用:@Value一般添加在对象的属性上,作用是这个属性添加一个初始值。使用方法是:
  1. 可以直接在 @Value(“xx”) 括号中直接赋值
    //直接赋值
   @Value("张三")
   private String name;
  1. 可以使用spring的表达式写法
    //使用表达式写法
   @Value("#{10/2}")
   private Integer age;
  1. 也可以将配置文件中的配置的值读取赋值给当前属性。
   //从配置文件中读取值
   @Value("${person.birthday}")
   private Date birthday;

两者区别

@ConfigrautionProperties@Value
功能可以批量注入配置文件中值需要在类中每个属性上一个个指定
SpEL表达式不支持支持
JSR303数据校验支持不支持
复杂类型封装支持不支持
  • 另外@ConfigrautionProperties还支持松散绑定,即属性的命名为驼峰原则时可以使用 “-” 来代替驼峰原则。例如 goodBoy可以写成 good-boy 依旧是可以成功赋值的。

@PropertySource

  • 作用:指定要加载哪个配置文件。
    示例:
	//配置文件名:person.yml
	@PropertySource("classpath:person.yml")
  • 注意当要加载的配置问价有多个时,可以使用数组。
    示例:
    @PropertySource(value = {"classpath:person.yml","classpath:person2.yml"})

以上是简单用法,如果你只是简单学习使用的话看到这里就可以停止了… …

  • 首先我们来看一下@ConfigurationPropertiesd的源码
	@Target({ ElementType.TYPE, ElementType.METHOD })
	@Retention(RetentionPolicy.RUNTIME)
	@Documented
	public @interface ConfigurationProperties {
  • @Targe中可以看出这个注解不只是可以在类上添加,同样可以在接口、枚举和方法上添加。
    目前注解添加在方法上有什么作用还没弄清楚,以后清楚了再补充…

    同时该注解有四个属性:

	@AliasFor("prefix")
	String value() default "";
	
	@AliasFor("value")
	String prefix() default "";
	
	boolean ignoreInvalidFields() default false;
	
	booean ignoreUnknownFields() default true;
  1. 前两个属性的作用是一致的,对于要绑定的内容是在配置文件中哪个一级标题下。以下三种使用方式的结果是一样的。
	@ConfigurationProperties(value = "person") 
	@ConfigurationProperties(prefix = "person")
	@ConfigurationProperties("person")
  1. 第三个属性的作用是 是否允许配置文件中属性和要绑定的类中属性类型不一致,默认情况为false。
	boolean ignoreInvalidFields() default false;

使用实例:

 	@ConfigurationProperties(ignoreInvalidFields = fasle)	
  1. 最后一个属性作用是 是否允许配置文件存在与实体类中不对应的属性,默认为true。

    使用示例:

	@ConfigurationProperties(ignoreUnknownFields= true)

本人才疏学浅,如果有错误的地方欢迎大家指正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot,可以使用@ConfigurationProperties注解来将配置文件的属性值与Java对象进行绑定。这样可以方便地管理应用程序的配置属性。 下面是使用@ConfigurationProperties注解的步骤: 1. 创建一个Java类,并在类上添加@ConfigurationProperties注解。该注解value属性指定了配置文件的前缀,prefix属性指定了配置文件的属性前缀。例如,如果配置文件的属性为myconfig.name,那么可以将value属性设置为"myconfig"。 ```java @ConfigurationProperties(prefix = "myconfig") public class MyConfigProperties { private String name; // getter和setter方法 } ``` 2. 在配置文件(application.properties或application.yml)定义属性值。例如,在application.properties添加以下内容: ``` myconfig.name=bj ``` 3. 在Spring Boot应用程序的主类使用@EnableConfigurationProperties注解来启用@ConfigurationProperties注解。将@ConfigurationProperties注解的类作为参数传递给@EnableConfigurationProperties注解。 ```java @SpringBootApplication @EnableConfigurationProperties(MyConfigProperties.class) public class MyApp { public static void main(String[] args) { SpringApplication.run(MyApp.class, args); } } ``` 现在,可以在其他组件注入使用@ConfigurationProperties注解的类,并使用的属性值。例如,在一个Service类注入MyConfigProperties类: ```java @Service public class MyService { private final MyConfigProperties configProperties; public MyService(MyConfigProperties configProperties) { this.configProperties = configProperties; } public void printName() { System.out.println("Name: " + configProperties.getName()); } } ``` 这样,就可以在应用程序使用@ConfigurationProperties注解来管理配置属性了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值