gpt4 book ai didi

java - Spring中继承@Component

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:08:22 27 4
gpt4 key购买 nike

我有一个类层次结构。我想用 @Component 标记它们.我试图只标记父类。我希望 Spring 也将 childs 作为组件。但这并没有发生。

我尝试使用自定义 @InheritedComponent 注释,如 here 所述.它不起作用。

我写了一个单元测试。它失败了:“No qualifying bean of type 'bean.inherit.component.Child' available”。 Spring 版本为 4.3.7。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Component
@Inherited
public @interface InheritedComponent {}

@InheritedComponent
class Parent { }

class Child extends Parent {
}

@Configuration
@ComponentScan(basePackages = "bean.inherit.component")
class Config {
}

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Config.class)
public class InheritComponentTest {

@Autowired
private Child child;

@Test
public void name() throws Exception {
assertNotNull(child);
}
}

最佳答案

您可以为此使用 ComponentScan.Filter。

@ComponentScan(basePackages = "bean.inherit.component", 
includeFilters = @ComponentScan.Filter(InheritedComponent.class))

这将允许 Spring Autowiring 您的 Child,而无需您直接将注释附加到 Child。

关于java - Spring中继承@Component,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43195970/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com