SpringBoot抽象类注⼊及其构造器中注⼊对象为空的解决⽅法
如果你想写⼀个抽象类作为⽗类,其中有⼦类使⽤的属性,在Spring Boot2.0中可以直接在⽗类属性上加⼊注解@Autowired,据说最好是protected修饰,但是我使⽤private也是可以的,低版本的可以使⽤protected修饰。抽象类的使用
如果你在⽗类中有⼀些逻辑要处理,那么你最好不要在构造器中引⽤抽象⽗类的⾃动注⼊属性,抽象类的实现类(⼦类)在构造时,必须调⽤⽗类的构造器,但是在⼦类创建完成之前(是⼦类的构造器调⽤结束之前)注⼊属性是null值,也就是说你不能引⽤任何注⼊属性,这样⼀来构造器就受限了。但是,可以采⽤/@PostConsturct注解来替代,⼀般⽽⾔,在对象构造完毕之后调⽤被此注解标注的⽅法,此时所有的对象已经注⼊完成。
另外,不要在构造器中使⽤Bean⽅法获取对象,此时ApplicationContextAware可能尚未⽣成实例对象,或者还未运⾏,取决于Spring Boot的代码逻辑,⼀般⽽⾔,应该是在所有实例构造完毕之后才能调⽤Bean⽅法,因为此时才能保证所有实例对象已经完成创建,如果创建中调⽤,可能会获取空值,强烈建议不要在程序构造中调⽤ApplicationContext⽅法,⽽是采⽤⾃动注⼊⽅式交给容器管理对象的创建。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。