防止Spring中某些bean的类型自动装配

时间:2013-01-16 12:10:52

标签: spring autowired

在我的spring上下文中,我正在为此服务bean(显式)创建服务bean和代理。两者都实现相同的接口。

我可以确保自动装配不能注入目标bean吗?

我希望能够将目标服务与@Resource或@Qualifier注释一起使用,但在自动装配时,它应始终是代理。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

使用Primary注释。它将指示在自动装配时最好使用哪个bean。

希望这会有所帮助:)

答案 1 :(得分:0)

您可以将@Primary注释放在代理服务中,如下面:

@Primary
@Repository
public class ProxyOfSomeService implements SomeService

之后,当您在SomeService字段上使用@Autowired注释时,ProxyOfSomeService将由deafault注入。

但是当你需要真正的服务时,你可以像下面那样:

@Autowired
@Resource(name="someRealService")
private SomeService someService;

我认为这符合您的需求,谢谢!