Java spring容器可以使用自定义方法注入协作者吗?

Java spring容器可以使用自定义方法注入协作者吗?,java,spring,dependency-injection,inversion-of-control,Java,Spring,Dependency Injection,Inversion Of Control,通常,依赖项是通过以下配置()通过setter注入的: 假设类examples.ExampleBean有一个listeners对象集合,方法addListener(SomeListenerInterface)是添加listeners的唯一可能方法。我是否可以像使用属性设置器那样以声明方式在xml中插入侦听器?这里是属性元素定义 属性元素对应于bean类公开的JavaBeansetter方法 要实现目标,可以使用@Autowired注释。即使使用任意名称,它也能工作 @Autowired pu

通常,依赖项是通过以下配置()通过setter注入的:



假设类
examples.ExampleBean
有一个listeners对象集合,方法
addListener(SomeListenerInterface)
是添加listeners的唯一可能方法。我是否可以像使用属性设置器那样以声明方式在xml中插入侦听器?

这里是属性元素定义

属性元素对应于bean类公开的JavaBeansetter方法

要实现目标,可以使用@Autowired注释。即使使用任意名称,它也能工作

@Autowired
public void inject(SomeListenerInterface someListenerInterface) {
    this.someListenerInterface = someListenerInterface;
}

您可能会想出一些巴洛克式的机制来在XML中完成这一切,但最干净的方法是使用
FactoryBean
。您编写了一个类,该类实现了
FactoryBean
,并负责构建和配置目标对象(请参阅)。您的
FactoryBean
将具有所需的getter/setter/autowiring,并将它们注入到目标对象中


在Spring中,这通常是处理非JavaBean的最干净的方法,尤其是当您无法修改目标类时。

这是可能的,但它会自动将所有“SomeListenerInterface”bean注入声明此属性的所有bean中。无论如何,谢谢你的信息,我不知道这个属性。
@Autowired
public void inject(SomeListenerInterface someListenerInterface) {
    this.someListenerInterface = someListenerInterface;
}