У меня есть класс (@Component
bean), который выглядит примерно так:
@Component
public class EntityCleaner {
@Autowired
private List<Cleaner> cleaners;
public void clean(Entity entity) {
for (Cleaner cleaner: cleaners) {
cleaner.clean(entity);
}
}
}
Очиститель - это интерфейс, и у меня есть несколько очистителей, которые я хочу, чтобы все они запускались (неследи за порядком).Сегодня я делаю что-то вроде этого:
@Configuration
public class MyConfiguration {
@Bean
public List<Cleaner> businessEntityCleaner() {
List<Cleaner> cleaners = new ArrayList<>();
cleaners.add(new Cleaner1());
cleaners.add(new Cleaner2());
cleaners.add(new Cleaner3());
// ... More cleaners here
return cleaners;
}
}
Есть ли способ построить этот список без определения специального метода в конфигурации?Именно эта пружина автоматически находит все эти классы, реализующие интерфейс Cleaner
, создает список и вводит его в EntityCleaner
?