欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot的屬性賦值@Value的用法說明

 更新時間:2022年03月26日 09:29:39   作者:qq_41075649  
這篇文章主要介紹了SpringBoot的屬性賦值@Value的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

今天學(xué)習(xí)到了SpringBoot 的屬性賦值@Value用法

先總結(jié)

  • @Value(" 張三 "):直接附在屬性名上,在Bean初始化時,會賦初始值
  • @Value(" #{ 20 - 2 } "):可以用 #{ },里面可以寫表達(dá)式,當(dāng)然也可以直接 @Value(" #{ 18 } ") 或 @Value(" 18 ")
  • @Value(" ${ person.name } "):利用 ${ } 可以取出配置文件中的值

例子

配置類:

@PropertySource(value={"classpath:/person.properties"})
@Configuration
public class MainConfigOfPropertyValues {
?
?? ?@Bean
?? ?public Person person() {
?? ??? ?return new Person();
?? ?}?? ?
}
  • @Configuration:告訴 Spring 這是一個配置類
  • @PropertySource:關(guān)聯(lián)配置文件,使用 @PropertySource 指定讀取外部配置文件,保存到運行的環(huán)境變量中,然后可以用@Value(" ${ person.name } ") 獲取環(huán)境變量中的值。

Bean :

public class Person {?
?? ?/*
?? ? * 使用@Value賦值:
?? ? * ?? ?1. 基本數(shù)值
?? ? * ?? ?2. 可以寫 #{ }
?? ? * ?? ?3. 可以寫 ${ },取出配置文件{properties}中的值
?? ? */
?? ?
?? ?@Value("張三")
?? ?private String name;
?? ?@Value("#{20-2}")
?? ?private int age;
?? ?@Value("${person.nickName}")
?? ?private String nickName;
?? ?
?? ?public String getNickName() {
?? ??? ?return nickName;
?? ?}
?? ?public void setNickName(String nickName) {
?? ??? ?this.nickName = nickName;
?? ?}
?? ?public String getName() {
?? ??? ?return name;
?? ?}
?? ?public void setName(String name) {
?? ??? ?this.name = name;
?? ?}
?? ?public int getAge() {
?? ??? ?return age;
?? ?}
?? ?public void setAge(int age) {
?? ??? ?this.age = age;
?? ?}
?? ?@Override
?? ?public String toString() {
?? ??? ?return "Person [name=" + name + ", age=" + age + ", nickName=" + nickName + "]";
?? ?}
?? ?public Person(String name, int age, String nickName) {
?? ??? ?super();
?? ??? ?this.name = name;
?? ??? ?this.age = age;
?? ??? ?this.nickName = nickName;
?? ?}
?? ?public Person() {
?? ??? ?super();
?? ??? ?// TODO Auto-generated constructor stub
?? ?}?? ?
}

配置文件:

person.nickName=\u5C0F\u4E09

這里面的 \u5C0F\u4E09 表示的是“小三”

而配置文件的位置: 

運行:

public class IOCTest_PropertyValue {
 
	//容器創(chuàng)建
	AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigOfPropertyValues.class);
	
	//打印容器中Bean的name
	private void printBeans(AnnotationConfigApplicationContext applicationContext) {
		String[] definitionName = applicationContext.getBeanDefinitionNames();
		
		for(String name : definitionName) {
			System.out.println(name);
		}
	}
	
	@Test
	public void test01() {
		printBeans(applicationContext);
		System.out.println("-------------------------------------------------------");
		
		//獲得容器中的Person
		Person person = (Person) applicationContext.getBean("person");
		System.out.println(person);
		
		//獲得環(huán)境變量中的值
		ConfigurableEnvironment environment = applicationContext.getEnvironment();
		String property = environment.getProperty("person.nickName");
		System.out.println("環(huán)境變量:"+property);		
		applicationContext.close();
	}	
}

運行結(jié)果:

@Value的使用及注意事項

為什么使用

使用@Vlue可以實現(xiàn)對于線上項目的一些通用配置的修改;或者修改項目中可能出現(xiàn)變動,但是卻又有很多地方都在使用的一些參數(shù),這樣我們我可直接通過修改配置文件而不用修改代碼的方式來達(dá)到參數(shù)的修改的目的

參數(shù)形式

yml文件

(簡單的參數(shù))

test1:
? ? ?num: 1
? ? ?name: xiaoming

獲取數(shù)據(jù)

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

(數(shù)組||集合)

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

獲取數(shù)據(jù)

//數(shù)組
@Value("${test.array1:}")
private String[] array1;
//集合
@Value("#{'${test.list1:}'.split(',')}")
private List<String> list1;
//集合進(jìn)一步做空數(shù)據(jù)處理
@Value("#{'${test.list:}'.empty ? null : '${test.list:}'.split(',')}")
private List<String> testList;

(Map)

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

獲取數(shù)據(jù)

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

前置條件(注意事項)

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

1. 使用正確的注解

@Value的使用要找對目標(biāo),我們所使用的注解的引用時這樣的

2. yml文件的格式

如果你使用的是yml文件的話,需要注意yml文件的注意格式問題 ,基本上參數(shù)名之后的冒號之后都要加空格,一般情況下,冒號后面加了空格,參數(shù)名都會變?yōu)樗{(lán)色

3. @Value使用的環(huán)境要求

  • 不能作用于靜態(tài)變量(static);
  • 不能作用于常量(final);
  • 不能在非注冊的類中使用(類需要被注冊在spring上下文中,如用@Service,@RestController,@Component等);
  • 使用這個類時,只能通過依賴注入的方式,用new的方式是不會自動注入這些配置的。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot配置mongodb連接池的方法步驟

    springboot配置mongodb連接池的方法步驟

    這篇文章主要介紹了springboot配置mongodb連接池的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • SpringBoot整合junit與Mybatis流程詳解

    SpringBoot整合junit與Mybatis流程詳解

    這篇文章主要介紹了SpringBoot整合第三方技術(shù),包括整合Junit、整合Mybatis,本文通過實例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Java源碼解析之可重入鎖ReentrantLock

    Java源碼解析之可重入鎖ReentrantLock

    今天小編就為大家分享一篇關(guān)于Java源碼解析之可重入鎖ReentrantLock,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • MyBatis逆向?程的生成過程

    MyBatis逆向?程的生成過程

    MyBatis官方為我們提供了一個逆向工程,通過這個逆向工程,只要建立好數(shù)據(jù)表,那么MyBatis就會根據(jù)這個表自動生成pojo類、dao接口、sql映射文件
    2023-02-02
  • Java 操作Properties配置文件詳解

    Java 操作Properties配置文件詳解

    這篇文章主要介紹了Java 操作Properties配置文件詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 在Spring中使用JDBC和JDBC模板的講解

    在Spring中使用JDBC和JDBC模板的講解

    今天小編就為大家分享一篇關(guān)于在Spring中使用JDBC和JDBC模板的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 參數(shù)校驗Spring的@Valid注解用法解析

    參數(shù)校驗Spring的@Valid注解用法解析

    這篇文章主要介紹了參數(shù)校驗Spring的@Valid注解用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringMVC實現(xiàn)文件上傳下載的全過程

    SpringMVC實現(xiàn)文件上傳下載的全過程

    對于上傳功能,我們在項目中是經(jīng)常會用到的,比如用戶注冊的時候,上傳用戶頭像,這個時候就會使用到上傳的功能,而對于下載使用場景也很常見,下面這篇文章主要給大家介紹了關(guān)于SpringMVC實現(xiàn)文件上傳下載的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • 理解Java中的靜態(tài)綁定和動態(tài)綁定

    理解Java中的靜態(tài)綁定和動態(tài)綁定

    這篇文章主要幫助大家理解Java中的靜態(tài)綁定和動態(tài)綁定,在Java中存在兩種綁定方式,一種為靜態(tài)綁定,另一種就是動態(tài)綁定,亦稱為后期綁定,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Java 安全模型,你了解了嗎

    Java 安全模型,你了解了嗎

    這篇文章主要介紹了Java 安全模型。Java的安全模型是其多個重要結(jié)構(gòu)特點之一,它使Java成為適用于網(wǎng)絡(luò)環(huán)境的技術(shù)。Java安全模型側(cè)重于保護(hù)終端用戶免受從網(wǎng)絡(luò)下載的、來自不可靠來源的、惡意程序(以及善意程序中的bug)的侵犯。,需要的朋友可以參考下
    2019-06-06

最新評論