gpt4 book ai didi

java - 如何使用 Spring 属性配置 Spring 查找方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:50:49 25 4
gpt4 key购买 nike

我试图在每次使用查找方法和 Spring 依赖注入(inject)调用 bean (myBean) 时注入(inject)一个属性:

<bean id="myBean" class="com.myclass"
<property name="default" ref="myDefault" >
<lookup-method name="getUri" bean="defaultUri" />
</property>
</bean>
<bean id="defaultUri" scope="prototype" class="DefaultUri" >
</bean>

class myclass {
public String getUri(){
return "test"
}
}

以上 XML 在启动时返回此错误:

“来自 PortletContext 资源的 XML 文档无效”

错误似乎是因为<lookup-method name="getUri" bean="defaultUri" />配置不正确。

当我试图在上面的 XML 中实现时,如何在字符串“属性”中配置 Spring 查找方法?

最佳答案

查找方法注入(inject)是容器覆盖容器管理的 bean 上的方法,返回容器中另一个命名 bean 的查找结果的能力。

现在,假设您想要获得 DefaultUri 的一个新实例(这是一个原型(prototype) bean)每次调用 createDefaultUri 中的方法(让它成为 myclass)时(这是一个单例 bean)。然后你可以定义MyClass像这样:

class abstract Myclass {
public String getUri(){
// create a new instance of DefaultUri
DefaultUri defaultUri = createDefaultUri();
return "test"
}

protected abstract DefaultUri createDefaultUri();
}

Spring Framework 会生成Myclass 的动态子类这将覆盖 createDefaultUri提供 DefaultUri 新实例的方法每次请求时。

您现在可以定义 lookup-method 的名称Myclass 中的名称bean 定义如下:

<bean id="defaultUri" scope="prototype" class="DefaultUri">
</bean>

<bean id="myBean" class="com.myclass"
<lookup-method name="createDefaultUri" bean="defaultUri" />
</bean>

关于java - 如何使用 Spring 属性配置 Spring 查找方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20261769/

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