【问题标题】:Make all Spring beans of a certain type request scoped使特定类型的所有 Spring bean 请求作用域
【发布时间】:2015-06-19 18:15:42
【问题描述】:

我有一个类,我希望该类型的所有对象都属于请求范围。在我的 Spring XML 中,我正在创建此类对象的列表。必须为这些bean中的每一个设置范围和代理模式是非常繁琐且容易出错的,那么有没有办法让所有这种类型的bean请求自动范围?

我尝试用@Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS) 注释类,但它似乎不起作用。通过 XML 创建 bean 时可能会忽略注释?

这是我目前在 XML 中的内容:

<util:list>
    <bean class="com.test.MyClass" scope="request">
        <aop:scoped-proxy/>
        <constructor-arg>
            <bean value="Hello"/>
        </constructor-arg>
    </bean>
    <bean class="com.test.MyClass" scope="request">
        <aop:scoped-proxy/>
        <constructor-arg>
            <bean value="Friend"/>
        </constructor-arg>
    </bean>
</util:list>

还有我的班级:

public class MyClass {
    private String value;

    public MyClass() { /* Default constructor */ }

    public MyClass(String value) {
        this.value = value;
}

基本上,我想知道是否有一种方法可以避免必须将 scope="request"&lt;aop:scoped-proxy/&gt; 添加到 MyClass 类型的每个 bean 并让它们自动被请求范围。

【问题讨论】:

  • 您可以使用abstract bean,但您仍然必须在XML 中为每个bean 指定它。

标签: java spring spring-mvc


【解决方案1】:

除了使用@Scope 之外,您还可以尝试使用@Component 来注释类。您需要在包中添加一个带有@Configuration 和@ComponentScan 的配置类,以允许扫描组件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    相关资源
    最近更新 更多