Spring:在启动时配置应该初始化哪些服务bean的最佳方法是什么?

时间:2011-09-05 09:43:56

标签: spring service autowired

好吧,这可能听起来像一个奇怪的问题,但这里有一个问题:我们这里有一个基于Spring的应用程序,具有不同的“设置”模式。在一种模式下,它需要使用其他服务bean(连接到外部资源),而在另一种模式下则不需要。

我现在正在寻找的是某种方法来阻止初始化那些在一种设置模式下不需要的bean,我遇到的唯一方法是使用标准applicationContext.xml方式事物(即没有@Service注释)并且在某些bean中使用@Autowired(required=false)取决于(可选)组件。

这是进一步(甚至可能)的有效方式吗?我真的不喜欢从基于注释的布线的简单性中解脱太多,并希望尽可能少地编写XML配置...

2 个答案:

答案 0 :(得分:2)

如果您可以使用Spring 3.1,则可以使用名为“个人档案”的新功能来执行您想要的操作。查看this blog post,其中介绍了如何将配置文件与基于注释的代码配合使用。

答案 1 :(得分:1)

一种方法是在自己的包中为不同的“模式”隔离不同的类。然后,您可以使用应用程序上下文xml中的<context:component-scan>元素来控制扫描哪些包,哪些包不扫描。或者使用包含/排除过滤器(请参阅http://static.springsource.org/spring/docs/2.5.x/reference/beans.html#beans-scanning-filters)。这样,您就可以根据自己的自定义注释定义排除过滤器。