配置类
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);
}
}
}