使用new关键字创建时Spring存储库中的java自动连接
我有下面这样的服务
@Service
public class A {
public B data() {
InterfaceA B = (codition) ? new B1() : new B2();
B.check();
}
}
@Service
public class B1 {
@Autowired
private B1Repo b1repo;//repository
public B1 check() {
b1repo.find();
}
}
当我运行服务A.data()
进程时,我将b1repo
设为空。存储库不是自动连接的,因为我使用了new
关键字。
我已经检查了以下问题
related_issue
但这并没有帮我解决这个问题
# 1 楼答案
当你在spring boot中应用D依赖反转原理的实体原理时。这可能对你有帮助
# 2 楼答案
Spring框架创建所有组件实例本身,并填充所有必需的自动连接属性。这被称为依赖注入。 创建服务类的新实例时,它是一个没有自动连接的原始实例
如果必须在某种条件下实现服务,我建议使用Spring Profiles