配置類
package com.ysy.config;
import com.ysy.Person;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
/**
- @author shanyangyang
- @date 2020/6/2
*/
//使用PropertySource讀取外部文件中的k/v保存到運行的環境變量中
@PropertySource(value = {“classpath:/person.properties”})
@Configuration
public class MainConfigOfPropertyValue {
@Bean
public Person person(){
return new Person();
}
}
配置文件
實體類多種賦值方式
package com.ysy;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
/**
* @author shanyangyang
* @date 2020/5/22
*/
public class Person {
//使用@value賦值
//1、基本數值
//2、可以寫SPEL表達式 #{}
//3、可以寫${},取出配置文件中的值(運行的環境變量中的值)
@Value("ysy")
private String name;
@Value("#{10+18}")
private Integer age;
@Value("${person.nickName}")
private String nickName;
public Person() {
}
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
@Override public String toString() {
return "Person{" + "name='" + name + '\'' + ", age=" + age + ", nickName='" + nickName + '\'' + '}';
}
}
測試類
package com.ysy.test;
import com.ysy.config.MainConfigOfProfile;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
/**
* @author shanyangyang
* @date 2020/6/8
*/
public class IOCTestOfProfile {
//AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MainConfigOfProfile.class);
//1、使用命令行動態參數,在虛擬機參數位置加載:-Dspring.profiles.active=test
//2、創建一個AnnotationConfigApplicationContext對象,無參構造器;設置需要激活的環境;註冊配置類,啓動刷新容器
@Test
public void test01(){
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.getEnvironment().setActiveProfiles("testA");
context.register(MainConfigOfProfile.class);
context.refresh();
print(context);
}
private void print(AnnotationConfigApplicationContext context) {
String[] beanDefinitionNames = context.getBeanDefinitionNames();
for (String name:beanDefinitionNames){
System.out.println(name);
}
}
}