Spring 使用构造型注释创建 Bean 时,上下文似乎无法识别它。抛出 NoSuchBeanDefinitionException
Spring Context doesn't seem to recognize a Bean when creating it with stereotype annotations. Throws NoSuchBeanDefinitionException
我正在看一本书来学习 Spring 生态系统的一些模块。目前正在尝试使用构造型注释创建 bean。
我写了一个简单的 Java class 并将其标记为组件:
package main.parrot;
@Component
public class Parrot {
private String name;
// getters and setters //
}
然后我创建了一个 @Configuration class 来扫描 Parrot 组件:
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: 没有 'main.parrot.Parrot' 类型的合格 bean 可用
我只是不明白为什么这个配置找不到Parrot bean。如果有人能帮我澄清这个问题,我将不胜感激。
提前致谢
您需要更改 basePackages
以包含完整的包名称:
package main;
//imports
@Configuration
@ComponentScan(basePackages = "main.parrot")
public class ProjectConfig{}
我正在看一本书来学习 Spring 生态系统的一些模块。目前正在尝试使用构造型注释创建 bean。 我写了一个简单的 Java class 并将其标记为组件:
package main.parrot;
@Component
public class Parrot {
private String name;
// getters and setters //
}
然后我创建了一个 @Configuration class 来扫描 Parrot 组件:
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: 没有 'main.parrot.Parrot' 类型的合格 bean 可用
我只是不明白为什么这个配置找不到Parrot bean。如果有人能帮我澄清这个问题,我将不胜感激。
提前致谢
您需要更改 basePackages
以包含完整的包名称:
package main;
//imports
@Configuration
@ComponentScan(basePackages = "main.parrot")
public class ProjectConfig{}