我们在项目中使用Spring,并使用@Autowired自动注入依赖项。我想禁止来自特定模块的某些bean的自动装配,例如,可以从模块B中的模块A自动装配bean,但不能在模块C中自动装配bean。使用Spring可以吗?
发布于 2011-10-20 18:03:24
解决这个问题的最好方法是通过javax.inject qualifiers。使用适当的限定符注释bean,然后在注入点使用它:
@Autowired
@FooQualifier
private YourService service;否则,它很快就会变得一团糟,哪个实现被注入到哪里。
另一种选择是将一个bean指定为@Primary -对于给定的注入点,它将优先于其他bean。
发布于 2018-01-20 09:35:51
是的,这是可能的,但不是“漂亮”。您可以使用BeanPostProcessor,当您获得一个bean时,检查它是否是您的“父”类型之一,以及它的所有子bean是否都属于允许的类型。否则,您可以抛出异常或将这些字段设置为null。
https://stackoverflow.com/questions/7832935
复制相似问题