[英]No qualifying bean
研究 Springboot,我让自己陷入了一个无限的错误虫洞。 这是最后一个:没有可用的 'ca.company.hello.A' 类型的合格 bean
然而,令我困惑的是我确实定义了 bean:
@Configuration
public class Config {
@Bean
public B b() {
return new B();
}
@Bean
public A a() {
return new A();
}
}
并像这样使用它:
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
@Profile("client_app_profile_name")
@SpringBootApplication
public class Helloer {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(Helloer.class, args);
A a = ctx.getBean(A.class);
a.speak();
}
}
这是我的文件结构:
这是 class A,以防万一:
@Component
public class A {
@Autowired
private B b;
@Value("Covid 19")
private String calamity;
public void speak() {
b.writeToScreen(this.calamity);
}
}
有人可以给我提示一下 Springboot 还想从我这里得到什么吗? ;)
附言
如果我从Config
中删除Bean A
,同样的错误仍然存在:
@Configuration
public class Config {
@Bean
public B b() {
return new B();
}
}
我可以重现你的问题。
1 - 将您的 Helloer class 移动到 ca.company package 内部。 如果 Helloer 与 ca.company 处于同一级别,则 Spring 类路径扫描将不起作用,您将收到如下错误:
如果您正在 @ComponentScanning 一个 springframework package,也会发生这种情况(例如,如果您错误地将 @ComponentScan 放入默认 package 中)
你的结构应该是:
- java
- ca.company
- config
- hello
Helloer
2 - 在 spring 类路径扫描工作的情况下,您可以从配置类中删除 bean 定义,因为您将收到双重 bean 定义错误。
3 - 删除您添加的注释以抑制 [1] 中的错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.