java—使用new关键字创建时在spring存储库中自动连接

rn0zuynd  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(312)

我有下面这样的服务

@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 关键字。我已经检查了以下问题相关的问题
但这并没有帮助我解决问题

laximzn5

laximzn51#

@Service
public class A {
    @Autowired
    private B1 b1;

    @Autowired
    private B2 b2;

    public B data() {
        InterfaceA B = (codition) ? b1 : b2;
        B.check();
   }
}

@Service
public class B1 {

     @Autowired
     private B1Repo b1repo;//repository

     public B1 check() {
           b1repo.find();
     }
}

当你在SpringBoot中应用d依赖反转原理的实体原理时。这也许对你有帮助。

tkqqtvp1

tkqqtvp12#

spring框架创建所有组件示例本身并填充所有必需的自动连接属性。这称为依赖注入。创建服务类的新示例时,它是没有自动连线的原始示例。
如果您必须在某种条件下实现服务,我建议您使用spring概要文件

相关问题