将Spring Bean的可访问范围(@ Autowire / @ Resource)限制为一个包

时间:2013-07-26 19:20:46

标签: spring

如何限制spring bean的可访问范围?

这是可能的,还是推荐的?


我问,因为我有一个案例,我希望ConnectionManager课程 @Autowired @Resource每个特定的IExternalConnection(以防万一)我后来需要单独的ConnectionManager类。

但是,我不希望其他类直接使用这些连接。对我来说,有一些方法可以使IExternalConnection bean包变为私有。

关于Spring Bean范围的大多数问题都与Bean的生命周期有关,具体是 这个问题是关于什么的

修改: 这里有一些代码片段来澄清我的意思

public class ConnectionFactory {
    @Resource(name = "defaultConnectionManager")
    private IExternalConnectionManager              defaultConnectionManager;

    @Resource(name = "someOtherConnectionManager")
    private IExternalConnectionManager              someOtherConnectionManager;
}

配置类:

@Configuration
public class Connections {
    @Bean
    public ConnectionFactory defaultConnectionFactory() {
        return new ConnectionFactory();
    }
    @Bean
    public IExternalConnectionManager defaultConnectionManager() {
        return new defaultConnectionManager();
    }
    @Bean
    public IExternalConnectionManager someOtherConnectionManager() {
        return new someOtherConnectionManager();
    }
}

正在制作Connections的目标只提供defaultConnectionFactory Bean,而不是defaultConnectionManagersomeOtherConnectionManager

1 个答案:

答案 0 :(得分:0)

这样的事情对你有用吗? 在第一个bean的范围内定义第二个bean

    <bean class="connectionFactory" >
    <property name="defaultConnectionManager">
        <bean class="com.xyz.Connectionmanager" >
            <property name="connection">
                <bean class="com.xyz.Connection" ></bean>
            </property>
        </bean>
    </property>
</bean>