Почему бины, созданные методами @Bean, Spring считает аннотированными аннотациями класса, в котором описан метод?
Дано: Spring IOC, ComponentScan
Создаю дополнительные бины методами Component-класса.
Всё работает, но созданные бины Spring считает аннотированными теми же аннотациями, что и класс, в котором описан метод.
@SomeComponent.SomeAnnotation
@Component
public class SomeComponent {
private final ApplicationContext ctx;
public SomeComponent(ApplicationContext ctx) { this.ctx = ctx;}
@Retention(RetentionPolicy.RUNTIME)
public @interface SomeAnnotation {}
@PostConstruct
public void test() {
if (ctx.getBeansWithAnnotation(SomeAnnotation.class).size() > 1)
throw new RuntimeException("Бин, созданный через a(), spring тоже считает аннотированным");
}
@Bean public static Object a() {
return new Object();
}
}
Что можно сделать для того, чтобы бин "a" не попадал в список аннотированных? Можно конечно положить метод a() в отдельный @Component без аннотаций, но это слегка громоздко.
upd: В общем, пока остановился на static nested class, пометив его как @Component. на него аннотации внешнего класса не распространяются.