在抽象基类中使用@autowired
2022-09-03 07:30:13
据我所知,不建议这样做。应该使用代替。field injection
constructor
我在这里尝试做的是在基类的构造函数中使用,并使其可供所有子类访问。在某些子类中,我还需要一些特定的bean来自它们的构造函数。演示代码如下:@Autowired
@Autowired
基类:
public abstract class Base {
protected final MyDemoService myDemoService;
@Autowired
public Base(MyDemoService myDemoService) {
this.myDemoService = myDemoService;
}
}
继承(子)类:
public class Sub extends Base {
private final MySubService mySubService;
@Autowired
public Sub(MySubService mySubService) {
this.mySubService = mySubService;
}
}
这将给我一个“没有默认构造函数”错误。
它类似于问题:类似的问题和答案,但它在这里不起作用。
我已经深入研究了一段时间,我发现这篇文章是关于:进一步阅读dependency injection
我认为我的问题是正确的方法吗?Setter Injection
设置器注射:
public abstract class Base {
protected MyDemoService myDemoService;
@Autowired
public void setMyDemoService(MyDemoService myDemoService) {
this.myDemoService = myDemoService;
}
}
我是Java Spring Boot的新手,希望从你们那里得到一些专业知识建议。任何讨论将不胜感激!