【问题标题】:Spring 3.0 Disable @Inject Annotation ProcessingSpring 3.0 禁用@Inject 注解处理
【发布时间】:2011-10-06 11:50:43
【问题描述】:

有没有办法禁用spring 3.0的@Inject注解处理?

我正在尝试将 CDI @Conversation Scope 与 spring 一起使用,但是当涉及到

@Inject
private Conversation conversation;

spring 尝试自动连接显然失败的对话。

【问题讨论】:

  • 很想知道您在 Spring 中使用了哪个 CDI 实现?

标签: java spring cdi


【解决方案1】:

我在尝试混合使用 Spring 3.x 和 CDI 注释时遇到了类似的问题。

我找到了一种在非 Spring bean 中禁用 Spring @Inject 处理的方法;只需为带有 @Named 注释的类创建一个排除过滤器:

@Configuration
@ComponentScan(excludeFilters = {@Filter(Named.class)})
public class SpringConfig
{
}

或禁用默认过滤器,例如:

@Configuration
@ComponentScan(useDefaultFilters = false, includeFilters = {@Filter(Component.class)})
public class SpringConfig
{
}

这是因为 Spring 默认为 javax.inject.Named 设置了一个包含过滤器以激活 JSR-330 处理。

【讨论】:

    【解决方案2】:

    我不认为你可以。但是 Spring 有自己的对话支持 - 看看 Spring Web Flow。

    【讨论】:

    • 我已经评估了 Spring Web Flow,但它似乎超出了 Spring 社区的范围。当前的里程碑计划已经一年没有更新了。
    • 那是因为计划在 spring-mvc 中加入单独的对话支持
    猜你喜欢
    • 2011-11-22
    • 2016-10-10
    • 2012-11-27
    • 2011-05-07
    • 2020-12-29
    • 2013-05-01
    • 2015-05-14
    • 1970-01-01
    • 2011-10-29
    相关资源
    最近更新 更多