如何在Spring中缩小bean的可见性

时间:2016-04-14 15:26:20

标签: java spring

让我们假设我们有3个类:

@Component
public class A {
}

@Component
public class B {
}

@Component
public class C {
    @Autowired
    public C(A a, B b) { }
}

默认情况下,每个bean都会看到任何其他已定义的bean:

  • A见B和C
  • B见A和C
  • C见A和B.

我想要达到的目的是限制bean A的可见性:

  • A看不到其他豆
  • B见A和C
  • C见B和C

我认为我可以创建两个上下文:common,它只包含一个bean定义,以及子上下文,它查看在第一个上下文中定义的所有bean,并声明它自己的bean(B和C)。 不幸的是,我没有找到任何方法来使用Java Config。

你知道有什么方法可以实现这样的解决方案吗?

1 个答案:

答案 0 :(得分:0)

我不确定C是否可以看到A(看起来可能是想要的并且只有一个错字)。如果没问题,那么我认为以下内容可行:

由于您使用的是Spring注释,因此bean可以是包作用域。

http://sahits.ch/blog/blog/2014/02/16/package-private-beans/

应该这样做:

package the.first
@Component
public class A {
}
package the.second
@Component
//package protected
class B {
}
package the.second
@Component
//package protected
class C {
}