@Value
普通写法
- 给组件的属性注入值 使用
@Component
public class Car {
@Value("3")
private int id;
@Value("alex")
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
测试
public class SpringAnnotationTest1 {
static AnnotationConfigApplicationContext ioc = new AnnotationConfigApplicationContext(Car.class);
static void printBeans() {
String[] beans = ioc.getBeanDefinitionNames();
for (String bean : beans) {
System.out.println(bean);
}
}
@Test
public void test1() {
printBeans();
Car car = ioc.getBean(Car.class);
System.out.println(car.getId());
}
}
结果
car
3
小结: 之前误认为, ioc容器new对象的时候要传入一个配置类, 其实随便传入什么组件都可以, 它只是意味着给IOC容器的第一个组件而已.
SpEl写法
@Value("#{20-2}")
private Integer age;
取配置文件写法
将配置文件写入环境变量, 注意放入了环境变量中, 也可以从环境变量中取
@PropertySource("classpath:application.properties")
@Configuration
public class Banana {
@Value("${banana.name}")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
- 取出
@Test
public void test2() {
printBeans();
Banana banana = ioc.getBean(Banana.class);
System.out.println(banana.getName());
}