当前位置: 首页 > 知识库问答 >
问题:

使用Spring依赖项注入初始化对象状态时表示关联

林鸿飞
2023-03-14

我试图画一个类图,但对于在类似下面的场景中使用的关联关系感到困惑。

Interface SampleInterface{ 
    void sampleMethod();
}

class SampleInterfaceImpl implements SampleInterface{
    public void sampleMethod(){
    }
}


class launcher{
    private SampleInterface interfaceImpl;
    public void setInterfaceImpl(SampleInterface interfaceImpl)
    {
        this.setInterfaceImpl = interfaceImpl;
    }

}

在上面的示例中,Launcher类具有SampleInterface类型的状态变量interfaceImpl。我正在通过使用SpringSetter注入将SampleInterface的实现作为bean传递给初始化启动器类。bean的作用域是singleton。

同样的bean也通过spring传递给其他对象。

我的疑惑:

这种关系是组合还是聚合?(因为同一个bean被传递到任何需要它的地方,并且它在单例范围内)

当状态变量是接口类型而不是类类型时,我们可以将关系表示为聚合或组合吗?或者我应该把它作为一个协会来代表?

谢啦

共有1个答案

韦宣
2023-03-14

你不应该太关心组合/聚合,除非出于某种原因它是必要的。如果您明确希望显示某些对象的生存期取决于其他对象的生存期,则会出现这种情况。

所以在你的情况下,你应该简单地使用一个关联。这在任何情况下都不会是错误的。连接器有一个关于其语义学的层次结构。依赖性是最低水平。协会在上面。和聚合/组成上面的关联。使用较低的级别永远不会错。它只是在解释对象如何关联方面留下了更多的自由。

 类似资料:
  • 我预计Spring会通过将属性“property.key”设置为“property_value”来初始化StorageConfiguration对象。 但是,我得到以下异常 org.springframework.beans.factory.beanCreationException:创建类路径资源[applicationContext.xml]中定义的名为“storage”的bean时出错:在设

  • 问题内容: 我在中得到了我的保存方法。似乎没有自动接线,因为在调试时发现从未注入sessionFactory 。我浏览了许多答案,但没有一个可以解决我的问题。这是我的文件: 这是: 现在,我正在对dao类进行单元测试。但是NPE失败了。 控制台输出: 抛出的异常是: 问题答案: 您声明sessionFactory依赖项: 然后您还有: 尝试删除注释,因为如果使用XML配置,则多余。 仅仅因为添加了

  • 我似乎遇到了这个问题,当我使用注释为某些类配置依赖注入时,以及通过xml文件中的配置为其他类配置依赖注入时。 我有一个构造函数注入,我需要注入的对象到两个类的构造函数,他们得到不同的实例的,因为一个配置与注释和另一个在xml文件,所以是这样定义的: 已配置注释构造函数的类的构造函数: 和另一个类的构造函数: 它的配置在xml文件中: 所以我似乎注意到xml配置的类似乎有一个不同的实例,因为在通过x

  • 问题内容: 我想将依赖项注入。但是,我的方法不起作用。我可以看到Spring正在调用我的setter方法,但是稍后在调用when时,该属性为。 这是我的设置: ServletContextListener: web.xml :(这是文件中的最后一个侦听器) applicationContext.xml: 输出: 实现此目的的正确方法是什么? 问题答案: 我通过删除侦听器bean并为我的属性创建了一

  • 我想向Springbean注入一个单例对象依赖关系。问题是我无法访问和修改要注入其对象的类。让我描述一下这个例子。 所以我有我的接口,以及这个接口的实现,如下所示。 然后在我的配置类中,我正在创建一个bean,但是我需要在构造函数中向它传递对象,问题是我不能使成为bean,因为它来自外部包,我不能修改它。 所以我想做的是,能够将/autowire参数传递给bean。目前IntelliJ给我一个错误

  • 尝试启动服务时的异常跟踪: 2016-07-03 15:08:34.596信息35332---