前面一节讲Bean的配置,篇幅太长,其实还有不少东西没有加进去,比如Bean冲突,Bean作用域,Bean在不同环境下的加载,不过那些高级特性用的机会不多,就不写了。前面学习的时候,就提到,我们初始化的Bean都是硬编码的,Bean的装配除了确定Bean之间的依赖关系,将一个Bean的引用注入到另一个Bean中的属性和构造器中,将值诸如属性或构造函数也是重要的一部分。
Spring提供两种运行时求值的方式:
1、属性占位符
2、Spring表达式SpEL
属性占位符
首先是最简单的用Environment检索属性值。我们首先创建一个app.properties文件,位置就放到src下面
officeNo="office.number"
brand="app.brand"
price=1111111.1 //声明了上一节car和office的字段
思想很简单,读取文件获取Bean的初始化信息
加入了Environment的Java配置文件:
@Configuration
@PropertySource("classpath:/app.properties")
public class BossConfig {
@Autowired
Environment env;
@Bean
public Boss boss(){
return new Boss();
}
@Bean
public Car car(){
return new Car(env.getProperty("brand"),Double.parseDouble(env.getProperty("price")));
}
@Bean
public Office office(){
return new Office(env.getProperty("officeNo"));
}
}
这样就可以在运行时通过读取外部文件,诸如各个域的值。
Environment有获取property的重载函数和其他一些函数,对属性的完备性、默认值进行设置,不过也没有什么难的东西ÿ