为什么classpathbeandefinitionscanner.scan()不能扫描@bean?

1qczuiv0  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(429)

**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

上个月关门了。
改进这个问题
我有四节课是这样的;

我使用Spring5.3.1;开放jdk 11;这是我的密码;
主.java

public class Main {
public static void main(String[] args) {

    var registry = new SimpleBeanDefinitionRegistry();

    var scanner = new ClassPathBeanDefinitionScanner(registry);

    scanner.setIncludeAnnotationConfig(false);

    scanner.scan("org.scx.*");

    for (var name : registry.getBeanDefinitionNames()) {
        System.err.println(name);
    }
}

类一.java

@Component
public class ClassOne {

}

类2.java

@Component
public class ClassTwo {

    @Bean
    public ClassThree classThree() {
        return new ClassThree();
    }
}

类3.java

public class ClassThree {

}

现在我运行它;把这些打印出来;

classOne
classTwo

我找不到三班为什么?我该怎么办。
我完成了;使用springapplicationrunlistener;非常感谢大家

2lpgd968

2lpgd9681#

文档,即 ClassPathBeanDefinitionScanner 说:
一个bean定义扫描器,它在类路径上检测bean候选,在给定的注册表中注册相应的bean定义( BeanFactory 或者 ApplicationContext ).
候选类通过可配置的类型过滤器进行检测。默认过滤器包括用spring的 @Component , @Repository , @Service ,或 @Controller 刻板印象。
基本上,这是在类路径中扫描用 @Component 或派生的 @Component 注解,即注解本身带有 @Component .
就这样。它只扫描 @Component 带注解的类。加工 @Bean 此类不处理带注解的方法。这通常是由 refresh() a方法 ConfigurableApplicationContext .

相关问题