**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
上个月关门了。
改进这个问题
我有四节课是这样的;
我使用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;非常感谢大家
1条答案
按热度按时间2lpgd9681#
文档,即
ClassPathBeanDefinitionScanner
说:一个bean定义扫描器,它在类路径上检测bean候选,在给定的注册表中注册相应的bean定义(
BeanFactory
或者ApplicationContext
).候选类通过可配置的类型过滤器进行检测。默认过滤器包括用spring的
@Component
,@Repository
,@Service
,或@Controller
刻板印象。基本上,这是在类路径中扫描用
@Component
或派生的@Component
注解,即注解本身带有@Component
.就这样。它只扫描
@Component
带注解的类。加工@Bean
此类不处理带注解的方法。这通常是由refresh()
a方法ConfigurableApplicationContext
.