gpt4 book ai didi

spring - Spring 3.0 依赖注入(inject)时指定setter方法名

转载 作者:行者123 更新时间:2023-12-04 17:56:54 25 4
gpt4 key购买 nike

我正在准备一种 bean ,它存在于我正在使用的一个 jar 中。

该类具有不符合 Spring 框架执行注入(inject)所需的标准 setter 方法名称的 setter 方法(例如,属性 userName 具有 setter 方法 addUserName 而不是 setUserName )。

有没有办法在注入(inject)属性期间指定设置方法名称?

最佳答案

使用 MethodInvokingFactoryBean 或许可以做到这一点。类(class)。有了这个,您可以调用目标对象的方法。

你用 Spring 实例化你的对象,然后调用 addUserName在上面。

我不确定您是否可以使用注释来执行此操作,但使用 XML 可以。例如:

package some.pack;

public class Target {
private String userName;
public Target() {
...
}
public void addUserName(String userName) {
this.userName = userName;
}
...
}

您可以设置 userName Target 上的属性(property)像这样的例子:
<!-- first create your Target object -->
<bean id="target" class="some.pack.Target" />

<!-- then set the userName property by calling the non-conventional setter -->
<bean id="caller" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" ref="target" />
<property name="targetMethod" value="addUserName" />
<property name="arguments">
<list>
<value>John_Doe</value>
</list>
</property>
</bean>

这样做的缺点是,如果您需要调用多个方法,则必须为每个方法添加一个“调用者”bean。这将增加您必须编写的 XML 的大小。

此外,您可以使用 Adapter pattern将您的对象包装成尊重 getXXX 的东西/ setXXX约定并在包装器上以标准方式执行 DI。

关于spring - Spring 3.0 依赖注入(inject)时指定setter方法名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6718985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com