如何在春季缩小豆的知名度

mil*_*lus 5 java spring

假设我们有3个类:

@Component
public class A {
}

@Component
public class B {
}

@Component
public class C {
    @Autowired
    public C(A a, B b) { }
}
Run Code Online (Sandbox Code Playgroud)

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

  • A看到B和C
  • B看到A和C
  • C看到A和B。

我要实现的是限制bean A的可见性:

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

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

您知道实现这种解决方案的任何方法吗?

Apr*_*ohn 1

我不确定 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 {
}
Run Code Online (Sandbox Code Playgroud)