spring使用@Autowired为抽象父类注入依赖

有时候为了管理或者避免不一致性,希望具体服务统一继承抽象父类,同时使用@Autowired为抽象父类注入依赖。搜了了网上,有些解决方法实现实在不敢恭维,靠子类去注入依赖,那还有什么意义,如下:

父类:

1public abstract class BaseCar { 2 Settings settings; 3} 4 5@Component 6public class SportsCar extends BaseCar{ 7 //Autowired修饰方法时,根据方法参数类型判断实例化哪个类 8 @Autowired 9 public void haha(Settings settings){ 10 super.settings=settings;//父类属性注入 11 } 12 13 public void print(){ 14 15 System.out.print(settings.getSpeed()); 16 } 17}

这还叫自动???

经仔细研究与测试,只要父类要注入的属性是protected保护级别即可,如下:

1public abstract class BusinessService { 2 3 @Lazy 4 @Autowired 5 protected RedisUtil redisUtil; 6 7 Logger logger = LoggerFactory.getLogger(this.getClass()); 8}

子类继承后就可以直接使用redisUtil了,不会出现未注入的情况。

点赞
收藏

评论区

加载中...

相关推荐

java中多态的实现机制

多态的概念:  简单来说就是事物在运行过程中存在的不同状态,即父类或接口定义的引用变量指向子类或具体实现类的实例对象。程序调用方法在运行期才进行动态绑定,而不是引用变量的类型中定义的方法。多态存在的前提:1、存在继承关系,子类继承父类;2、子类重写父类的方法;3、父类引用指向子类对象。具体实例:1、定义一个父类:Animal

java反射机制基础

1、首先创建一个抽象父类:packageclasses;publicabstractclassBasePrint{publicabstractvoidprint();}2、创建两个打印类继承抽象父类:packageclasses;publicclass

你不可不知的JS面试题(第二期)

1、什么是继承?子类可以使用父类的所有功能,并且对功能进行扩展。新增方法改用方法(1)、ES6使用extends子类继承父类的方法。// 父类    class A        constructor(name)            this.name name;                getNa

Python Day24:类的继承、派生、覆盖、super()、绑定、非绑定方法

类的继承、派生、覆盖、super()python类的继承:子类继承父类,只需要在定义类的时候在类名后面加上(父类名)。继承之后,父类的属性方法、子类都可以访问派生:子类继承父类后,自己在父类的基础上,又添加了一些属于自己特性的属性、方法

Python3中的super()函数详解

关于Python3中的super()函数我们都知道,在Python3中子类在继承父类的时候,当子类中的方法与父类中的方法重名时,子类中的方法会覆盖父类中的方法,那么,如果我们想实现同时调用父类和子类中的同名方法,就需要使用到super()这个函数,用法为super().函数名()下面是一个例子:

Java的类继承

知识点1、继承作用:提高代码的重用性,继承之后子类可以继承父类中的属性和方法减少重复代码条件:子类和父类要满足isa的逻辑关系,才能使用继承。如:苹果isa水果语法:使用extends连接子类和父类。子类extends父类Java是单继承,一个类只能继承一个父类。子类不能继承父类私有的属性,但是可以