1、@Value 与从环境变量中获取值的代码例子
person.properties
person.nickName=haoxiansheng
package com.hao.bean;
import org.springframework.beans.factory.annotation.Value;
/**
* @author haoxiansheng
* @date 2020-05-28
*/
public class Person {
/**
* 使用@Value
* 1、基本数值
* 2、可以写SpEL:#{}
* 3、可以写¥${} 取出配置文件中给的值(在环境变量中)
*
*/
@Value("zhangsan")
private String name;
@Value("#{20-2}")
private Integer age;
@Value("${person.nickName}")
private String nickName;
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 Person(String name, Integer age) {
this.name = name;
this.age = age;
}
public Person() {
}
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.hao.config;
import com.hao.bean.Person;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
/**
* @author haoxiansheng
* @date 2020-05-29
*/
// @PropertySource 读取外部配置文件的 保存到环境变量
@PropertySource(value = {"person.properties"})
@Configuration
public class MainConfigOfPropertyValue {
@Bean
public Person person() {
return new Person();
}
}
package com.hao.test;
import com.hao.bean.Person;
import com.hao.config.MainConfigOfPropertyValue;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
/**
* @author haoxiansheng
* @date 2020-05-29
*/
public class IOCPropertyValueTest {
@Test
public void test02() {
// 1、传入配置类 创建IOC 容器
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigOfPropertyValue.class);
System.out.println("ioc 容器创建完成");
System.out.println(applicationContext);
Object person = applicationContext.getBean("person");
// 2、从环境变量中获取
ConfigurableEnvironment environment = applicationContext.getEnvironment();
String property =environment.getProperty("person.nickName");
System.out.println(property);
System.out.println(person);
printBean(applicationContext);
}
private void printBean(AnnotationConfigApplicationContext applicationContext) {
String[] beanNamesForType = applicationContext.getBeanNamesForType(Person.class);
for (String name: beanNamesForType) {
System.out.println(name);
}
}
}