Проблема: Мне нужно получить все компоненты, которые я явно создал в своем приложении. При вызове ApplicationContext.getbeandefinitionname()
я получаю список имен компонентов, но многие из них созданы явно не мной, а Spring, и они меня не интересуют. На данный момент нет правила именования, которое я мог бы использовать для фильтрации, потому что не все компоненты, вводимые Spring, начинаются с “org.springframework”
Решение: Используя ApplicationContext.getbeandefinitionname()
и фильтруя компоненты по имени моего корневого пакета (это решение также работает для других вариантов использования, например, если я хочу получить все компоненты, которые я определил в определенном пакете).
package com.omiu.demo; .... @Service class PersonService {} @Component class PersonAnalyzer {} class SimpleAnalyzer {} @Configuration class GeneralConfig { @Bean public SimpleAnalyzer simpleAnalyzer() { return new SimpleAnalyzer(); } } @SpringBootApplication public class DemoApplication { public static void main(String[] args) { ConfigurableApplicationContext applicationContext = SpringApplication.run(DemoApplication.class, args); List
Это дает мне список всего из 5 компонентов, именно тех, которые меня интересуют:
Оригинал: “https://dev.to/ovidiu141/spring-boot-tip-how-to-get-only-the-beans-i-have-created-explicitly-54bf”