В приложении Spring Boot у меня есть класс, как показано ниже:
@Service
public class XYZ{
}
Я хочу использовать выше в другом классе ABC, например:
public class ABC{
@Autowired
private XYZ xyx;
}
Выдает ошибку, что XYZ не может быть найден. У меня уже есть @SpringBootApplication в классе, где написан основной метод. Следовательно, это автоматически включит @ComponentScan в пакете. ABC создается как bean-компонент в файле конфигурации Spring. Насколько я понимаю, поскольку XYZ был помечен @service, Spring сканирует, создает и регистрирует этот bean-компонент. Как я могу получить доступ к этому bean-компоненту в другом классе без использования конфигурации xml?




Как создается экземпляр ABC? Объект ABC должен быть создан Spring.
Другими словами, класс ABC также должен быть чем-то вроде @Component. Он может быть подключен автоматически с помощью @SpringBootApplication или, в случае веб-приложения, это может быть @Controller.
Как вы используете ABC после того, как он был создан как bean-компонент?
ABC - слушатель событий
В дополнение к тому, что @Sharon Ben Asher сказал выше: На всякий случай, если ошибка возникает во время выполнения теста и если тестовый контекст использует что-либо, кроме @SpringBootTest, тогда есть шанс, что этот контекст не будет сканировать bean-компоненты аннотации @Service.
Например, тестовый класс, помеченный @DataJpaTest, не будет сканировать компоненты @Service; для его анализа требуется явный @ComponentScan. Подробности об образцах сниппетов можно найти здесь https://stackoverflow.com/a/52939210/5107365.
ABC создается как bean-компонент в XML-файле конфигурации Spring