1

我正在关注一本书来学习 Spring 生态系统的一些模块。目前正在尝试使用构造型注释创建 bean。我编写了一个简单的 Java 类并将其标记为组件:

package main.parrot;
@Component
public class Parrot {
  private String name;
  // getters and setters //
}

然后我创建了一个扫描 Parrot 组件的@Configuration 类:

package main;
//imports
@Configuration
@ComponentScan(basePackages = "parrot")
public class ProjectConfig{}

在我的主要方法中,我正在使用上面的配置创建一个 spring 上下文,并且我正在尝试访问 bean Parrot:

package main;
//imports//
public class Main{
  public static void main(String...args){
    var context = new AnnotationConfigApplicationContext(ProjectConfig.class);
    var p = context.getBean(Parrot.class);
  }
}

我尝试获取 Parrot bean 的代码行引发以下异常: NoSuchBeanDefinitionException: No qualifying bean of type 'main.parrot.Parrot' available

我只是不明白为什么这个配置找不到 Parrot bean。如果有人可以帮助我澄清这个问题,我将非常感激。

先感谢您

4

1 回答 1

0

您需要更改basePackages以包含完整的包名称:

package main;
//imports
@Configuration
@ComponentScan(basePackages = "main.parrot")
public class ProjectConfig{}
于 2021-10-07T10:22:24.983 回答