#spring #spring-bean #spring-context
Вопрос:
Я следую книге, чтобы изучить некоторые модули экосистемы Spring. В настоящее время пытаюсь создать компоненты с использованием аннотаций стереотипов. Я написал простой класс Java и пометил его как компонент:
package main.parrot;
@Component
public class Parrot {
private String name;
// getters and setters //
}
Затем я создал класс @Configuration, который сканирует компонент Parrot:
package main;
//imports
@Configuration
@ComponentScan(basePackages = "parrot")
public class ProjectConfig{}
В своем основном методе я создаю контекст spring, используя приведенную выше конфигурацию, и пытаюсь получить доступ к бобовому попугаю:
package main;
//imports//
public class Main{
public static void main(String...args){
var context = new AnnotationConfigApplicationContext(ProjectConfig.class);
var p = context.getBean(Parrot.class);
}
}
Строка кода, в которой я пытаюсь получить боб Попугая, выдает следующее исключение:
Исключение NoSuchBeanDefinitionException: Нет квалифицирующего компонента типа ‘main.parrot.Попугай» доступен
Я просто не понимаю, почему эта конфигурация не нашла бы боба Попугая. Если бы кто-нибудь мог помочь мне прояснить этот вопрос, я был бы чрезвычайно признателен.
Заранее спасибо
Ответ №1:
Вам необходимо изменить basePackages
, чтобы включить полное имя пакета:
package main;
//imports
@Configuration
@ComponentScan(basePackages = "main.parrot")
public class ProjectConfig{}
Комментарии:
1. Понятно, большое вам спасибо. Я пробовал это сделать, но если я это сделаю, то получу огромную ошибку. Похоже, это просто потому, что файлы классов не поддерживаются версией spring, которую я использую, поэтому я могу легко это исправить. Еще раз спасибо!