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

005*_*005 5 spring

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

这可能吗,或者推荐吗?


我问,因为我有一个情况,我想ConnectionManager为每个特定的类提供一个类(以防我以后需要单独的类)。@Autowired @ResourceIExternalConnectionConnectionManager

但是,我不希望其他类直接使用这些连接。对我来说,有某种方法将 beans 包设为私有是有意义的IExternalConnection

关于 Spring Bean 范围的大多数问题都与 的生命周期有关Bean,这不是这个问题的重点

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

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

    @Resource(name = "someOtherConnectionManager")
    private IExternalConnectionManager              someOtherConnectionManager;
}
Run Code Online (Sandbox Code Playgroud)

配置类:

@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();
    }
}
Run Code Online (Sandbox Code Playgroud)

目标是Connections只提供defaultConnectionFactoryBean,而不是defaultConnectionManagersomeOtherConnectionManager

Sas*_*shi 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>
Run Code Online (Sandbox Code Playgroud)