父类子类属性传递问题,外带懒加载问题
父类子类属性->权限问题
作用域 | 当前类 | 同一package | 子孙类 | 其他package |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
friendly/default | √ | √ | × | × |
private | √ | × | × | × |
遇到的坑
子类和父类相同的属性对象时,并且用getter和setter方法进行spring管理。子类单独调用子类方法,对象可以使用,父类单独调用父类方法,属性对象可以使用,唯独子类调用父类的方法是,父类的属性对象无法使用,空指针。
子类衍生的父类和单独的父类不是一个对象,那么是不是可以理解成,子类的属性父类是拿不到的,在向上转型时
其原因未探究出来。
解决方法:
- 删除子类的属性对象,删除子类属性对象的getter和setter,对父类的属性对象的访问权限外放,子类调用父类方法,对属性对象可以拿到。
- 父类对象纯抽象化,不做业务处理,并在配置的时候,bean标签加上abstract=”true”,不进行实例化。
- 子类不调用父类方法。
懒加载
懒加载,顾名思义,只有用的时候才会加载。
在spring中,配置懒加载优先级:
1 | <beans /> <bean /> immediately |
其他
spring早起是默认懒加载的,在版本迭代和维护之后,默认配置已变成容器创建时加载,所以不配置懒加载的话,项目启动不是很快。当然单例越早注册越好,以便容器在自动装配和其他自省步骤中正确的推理它们。