【发布时间】:2011-10-06 11:50:43
【问题描述】:
有没有办法禁用spring 3.0的@Inject注解处理?
我正在尝试将 CDI @Conversation Scope 与 spring 一起使用,但是当涉及到
@Inject
private Conversation conversation;
spring 尝试自动连接显然失败的对话。
【问题讨论】:
-
很想知道您在 Spring 中使用了哪个 CDI 实现?
有没有办法禁用spring 3.0的@Inject注解处理?
我正在尝试将 CDI @Conversation Scope 与 spring 一起使用,但是当涉及到
@Inject
private Conversation conversation;
spring 尝试自动连接显然失败的对话。
【问题讨论】:
我在尝试混合使用 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 处理。
【讨论】:
我不认为你可以。但是 Spring 有自己的对话支持 - 看看 Spring Web Flow。
【讨论】: