Spring:如何隐藏依赖注入的bean?

sjn*_*ngm 2 java spring dependency-injection

情况是我有两个不同的资源包,一个是通用的,另一个是更具体的.它们不共享任何消息密钥.

一般一:

<bean id="messageSourceGlobal" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="messages/messagesGlobal" />
</bean>
Run Code Online (Sandbox Code Playgroud)

我将一般的一个包含在我的特定文件中(显然是不同的文件):

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="messages/messages" />
    <property name="parentMessageSource" ref="messageSourceGlobal" />
</bean>
Run Code Online (Sandbox Code Playgroud)

Java代码然后自动装配它:

@Autowired
private MessageSource messages;
Run Code Online (Sandbox Code Playgroud)

这将在启动web-app时导致异常,因为MessageSource找到了两个s.显然我可以用一个@Qualifier来向Spring说清楚我想要什么.但是,一般资源包不会单独使用.因此,我认为在这种情况下隐藏一般资源包从依赖注入是有意义的.一个好处是其他人不会遇到"重复".

这可能吗?我该怎么做?

gab*_*uzo 5

当然,您可以添加autowire-candidate="false"隐藏的bean的定义.