Spring⽤注解Annotation注⼊abstract抽象⽗类的属性
问题:
希望把⼦类公共的属性放在抽象类中。运⾏时,希望在Spring 扫描@Component注解,⾃动加载⼦类的同时,⾃动注⼊抽象⽗类的属性。抽象⽗类:
@Component
public abstract class BaseCar {
@Autowired
Settings settings;
}
⼦类:
@Component
public class SportsCar extends BaseCar{
public void print(){ //运⾏时报空指针异常,说明settings并没有通过@Autowired加载
System.out.Speed());
}
}
运⾏时报空指针异常,说明⼦类中,super.settings并没有通过@Autowired加载
原因是 Spring Ioc 注⼊的对象是实例,⽽不是类。
实例化⼦类的时候,抽象⽗类不可能实例化,所以属性 settings 并没有⾃动加载。 解决办法:
⽗类:
public abstract class BaseCar {
Settings settings;
}
⼦类:
@Component
public class SportsCar extends BaseCar{ //Autowired修饰⽅法时,根据⽅法参数类型判断实例化哪个类
@Autowired
public void haha(Settings settings){
super.settings=settings;//⽗类属性注⼊
}
public void print(){
System.out.Speed());
}
}
测试类:
@Component
spring ioc注解public class Test {
@Autowired
SportsCar sportsCar ;
@PostConstrust public void test(){
sportsCar.print();// 成功输出。abstract类的属性⾃动注⼊成功。
}
}

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