【问题标题】:How does Annotation @Autowire for interface instantiate in spring接口的Annotation @Autowire如何在spring中实例化
【发布时间】:2018-03-06 13:28:47
【问题描述】:

我见过很多 Spring boot 的例子,其中我们声明了一个扩展 crudrepository 的接口并声明了 CRUUD 方法。在 Service CLass 中发布我们自动装配接口并从 Service 类调用 crud 方法。

既然我们没有在任何地方实现这个接口(它扩展了 CrudRepo 在例子 PersonRepo 中),怎么会出现 spring 实例呢? 例如:

    interface PersonRepo extends CRUDRepository {
    // method declaration
    }

    @Service
    class PersonService{
    @Autowire
    PersonRepo perrepo;

    void insert(){
    perrepo.methodname();
    }

}

【问题讨论】:

    标签: spring spring-boot


    【解决方案1】:

    Spring 介绍了dynamic proxy。 事实上,它会扫描包并获取所有扩展 Crud Repository 接口的接口。为它们中的每一个创建一个动态代理实例。在每次调用时,代理都会检查调用了哪个方法并使用适当的注释。代理用作 bean,因此可以自动装配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-03
      • 1970-01-01
      • 2016-10-04
      • 2012-07-22
      • 2023-03-05
      • 2016-03-03
      • 2013-05-20
      • 1970-01-01
      相关资源
      最近更新 更多