bean 可以这样配置:
1. 引用 bean
- 110
2. 静态工厂方法
3. 非静态工厂方法(在类内部,new 一个对象,然后返回出来)
4. 循环依赖问题
Car 的构造函数传入一个 Boss 实例,Boss 的构造函数传入一个 Car 实例。
这样就不能使用构造函数注入了,而应使用属性注入方式。
5. 构造函数传入 bean
- John
// 这里 p 是这样来的 xmlns:p="http://www.springframework.org/schema/p" 当然,你也可以把 p 改成 aop
构造函数还可以这样注入:
- 红旗CA7220000红旗CA72中国一汽200
其中 Car 的构造函数这样的:
- public Car() {}
- public Car(String brand, double price) {
- this.brand = brand;
- this.price = price;
- }
- public Car(String brand, String corp, double price) {
- this.brand = brand;
- this.corp = corp;
- this.price = price;
- }
- public Car(String brand, String corp, int maxSpeed) {
- this.brand = brand;
- this.corp = corp;
- this.maxSpeed = maxSpeed;
- }
---------------------------------------------------------------------- 我就是一条分割线,重点看下面 --------------------------------------------------------------------------------------
一些细节:
1. 属性变量名有一个很容易被忽视的命名规范,前两个字母或者全部大写,或者全部小写。否则会报编译错误。或者说,这个命名,其对应的方法自动生成,不会与配置文件发生冲突。
3. 级联属性
若是希望初始化 Boss,直接给 Car 属性注入值
则应当改造 Boss 类
- public class Boss {
- private Car car = new Car();......
- }
必须提供一个非空的 Car 实例,若是没有为 car 属性提供 Car 对象,Spring 设置级联属性便会抛出 NullValueInNestedPathException 的异常。
4. 集合类型属性
比如 Boss 类里面,含有一个 List 类型的 favorities 属性,则需要这样配。
- 看报赛车高尔夫爬山游泳
上述代码同时涉及到了集合的合并。
集合合并分三步,1. 定义父 bean 2. 子 bean 指定父 bean 3. 和父 bean 中同名的属性值进行合并。即子集拥有五个元素。
List 属性既可以通过
来源: http://www.92to.com/bangong/2016/12-03/13846186.html