【问题标题】:Interface Injection beans.xml接口注入 beans.xml
【发布时间】:2013-03-28 15:09:12
【问题描述】:

我对 springs 有点陌生,我正在从事 springs3 MVC 项目。我已经阅读了有关 spring IoC 和 DI 的信息。基本上它支持构造函数和设置器 DI。但我想使用接口注入。我确实搜索了整个谷歌,浏览了各种示例,但找不到任何令人信服的示例。

我有一个InterfaceIntA 及其实现class IntAImpl。我想在beans.xml中定义它的关系,比如IntA A = new IntAImpl();,然后我可以直接注入bean IntA

对此有什么想法吗??

【问题讨论】:

    标签: spring spring-mvc dependency-injection


    【解决方案1】:

    像这样:

    @Autowired(value = "intA")
    public class IntAImpl implements IntA {
    }
    

    【讨论】:

    • 我如何在其他课程中使用它??我有一个服务类,我在其中实例化 IntA,我如何定义这种关系?那么 beans.xml 呢?没有变化吗??
    • 将它连接到每个需要它的类中。您必须告诉您的应用程序上下文 XML 使用上下文配置扫描。这是用于自动装配的较新注释样式。应用上下文 XML 是 Spring 1.0;现在你有一个选择。如果您调用 new,则该实例不受 Spring 的控制。您必须自动连接它并让 Spring bean factory 实例化它。
    • 好吧,我不知道。我不知道这种自动装配模式。
    【解决方案2】:

    嗯,我得到了我正在寻找的东西...... 我有 3 个类 IntA, IntAImpl, and Service(顾名思义,IntAinterfaceIntAImpl 是它的实现类,service 类调用 IntA 类方法)

    我在beans.xml 中为IntAImpl 创建了一个bean。 然后我在我的服务类中注入IntA中的bean,就像这样

    IntA = (IntA)context.getBean("IntAImpl");

    我的beans.xml是这样的

    <bean id="IntAImpl" class="com.IntAImpl" autowire="byType"></bean>

    这就是我实现接口注入的方式

    (可能我的问题可能具有误导性,对此深表歉意 )

    【讨论】:

    • 很好,但你还是太努力了。您的服务不应该为您询问上下文来获取Bean;如果你自动接线它会做到的。更少的代码,更多的 Spring。
    • 如果我自动连接它会起作用吗?我认为按类型自动装配会起作用
    • 按名称自动连接是我的偏好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 2023-03-23
    • 2017-06-10
    相关资源
    最近更新 更多