从依赖项覆盖@Component

时间:2017-06-01 17:40:58

标签: spring-boot

让我们说我有一个基础项目,我将在其他项目中用作依赖项。在这个Base项目中,我有一个我想要自定义的组件。为了简化,我们称之为工具。 Base项目正在使用不同类中的Tools。 是否可以在新项目中覆盖Tools组件中的方法,并使Base使用覆盖的方法?

很抱歉,如果这是一个基本问题,但我没有找到任何相关信息。

2 个答案:

答案 0 :(得分:1)

如果您扫描原始包中的原始组件bean,请停止扫描包并自行扩展并扫描新实现的包。它应该工作。换句话说,您可以定义First, Last并将其替换为您的BeanPostProcessor。两者都应该正常工作。

答案 1 :(得分:1)

还没有一段时间,但我想分享一个非常简单的方法来做到这一点。我简直不敢相信它是多么简单。

只需扩展您要覆盖的组件,并在其中添加@Primary。

@Component
public class Parent {

@Primary
@Component
public class Child extends Parent {

现在,您的应用将使用Child代替Parent,其中Parent是@Autowired