springboot的@value注解,springboot @value 表达式

  springboot的@value注解,springboot @value 表达式

  

目录

今天学习到了跳羚的属性赋值@值用法先总结例子@值的使用及注意事项为什么使用参数形式前置条件(注意事项)

 

  

今天学习到了SpringBoot 的属性赋值@Value用法

 

  

先总结

@Value(张三):直接附在属性名上,在豆初始化时,会赋初始值@Value( #{ 20 - 2 } ):可以用#{ },里面可以写表达式,当然也可以直接@Value( #{ 18 } )或@ Value( 18 )@ Value($ { person。名称} ):利用${ } 可以取出配置文件中的值

 

  

例子

配置类:

 

  @ property source(value={ class path :/人。属性 })@配置公共类MainConfigOfPropertyValues { @ Bean public Person Person(){ return new Person();} } @配置:告诉春天这是一个配置类@财产来源:关联配置文件,使用@财产来源指定读取外部配置文件,保存到运行的环境变量中,然后可以用@Value( ${ person.name } )获取环境变量中的值:豆。

  公共类人员{ /* *使用@值赋值: * 1.基本数值* 2.可以写#{ } * 3.可以写${ },取出配置文件{属性}中的值*/@Value(张三)私有字符串名;@ Value( # { 20-2 } )private int age;@Value(${person.nickName} )私有字符串昵称;公共字符串get nickName(){返回昵称;} public void setNickName(字符串昵称){ this . nickName=nickName } public String getName(){ return name;} public void set name(String name){ this。name=名称;} public int getAge(){ return age;} public void setAge(int age){ this。年龄=年龄;} @将public String重写为String(){ return Person[name= name ,age= age ,nickName= nickName ];}公众人物(字符串名年龄,字符串昵称){ super();this.name=namethis.age=年龄;this.nickName=昵称;}公众人物(){ super();//TODO自动生成的构造函数存根} }配置文件:

  person.nickName=u5C0Fu4E09这里面的u5C0Fu4E09表示的是"小三"

  而配置文件的位置:

  运行:

  公共类IOCTest_PropertyValue { //容器创建安诺特

  ionConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigOfPropertyValues.class);//打印容器中Bean的nameprivate void printBeans(AnnotationConfigApplicationContext applicationContext) {String[] definitionName = applicationContext.getBeanDefinitionNames();for(String name : definitionName) {System.out.println(name);}}@Testpublic void test01() {printBeans(applicationContext);System.out.println("-------------------------------------------------------");//获得容器中的PersonPerson person = (Person) applicationContext.getBean("person");System.out.println(person);//获得环境变量中的值ConfigurableEnvironment environment = applicationContext.getEnvironment();String property = environment.getProperty("person.nickName");System.out.println("环境变量:"+property);applicationContext.close();}}运行结果:

  

 

  

 

  

@Value的使用及注意事项

 

  

为什么使用

使用@Vlue可以实现对于线上项目的一些通用配置的修改;或者修改项目中可能出现变动,但是却又有很多地方都在使用的一些参数,这样我们我可直接通过修改配置文件而不用修改代码的方式来达到参数的修改的目的

 

  

 

  

参数形式

yml文件

 

  (简单的参数)

  

test1:     num: 1     name: xiaoming

获取数据

 

  

@Value("${test1.num}")private int num;@Value("${test1.name}")private String name;

(数组集合)

 

  

test:  array1: aaa,bbb,ccc  array2: 111,222,333  array3: 11.1,22.2,33.3  list1: ddd,eeee,111,333,222,444

获取数据

 

  

//数组@Value("${test.array1:}")private String[] array1;//集合@Value("#{${test.list1:}.split(,)}")private List<String> list1;//集合进一步做空数据处理@Value("#{${test.list:}.empty ? null : ${test.list:}.split(,)}")private List<String> testList;

(Map)

 

  

test:  map1: {"name": "zhangsan", "sex": "male"}  map2: {"math": "90", "english": "85"}

获取数据

 

  

@Value("#{${test.map2}}")private Map<String,String> map1;@Value("#{${test.map2}}")private Map<String,Integer> map2;

 

  

前置条件(注意事项)

想要能够很好的使用的使用@Value 需要注意一些前置条件

 

  1. 使用正确的注解

  @Value的使用要找对目标,我们所使用的注解的引用时这样的

  

 

  2. yml文件的格式

  如果你使用的是yml文件的话,需要注意yml文件的注意格式问题 ,基本上参数名之后的冒号之后都要加空格,一般情况下,冒号后面加了空格,参数名都会变为蓝色

  

 

  3. @Value使用的环境要求

  不能作用于静态变量(static);不能作用于常量(final);不能在非注册的类中使用(类需要被注册在spring上下文中,如用@Service,@RestController,@Component等);使用这个类时,只能通过依赖注入的方式,用new的方式是不会自动注入这些配置的。以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行IT。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: