Почему бины, созданные методами @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. на него аннотации внешнего класса не распространяются.


Ответы (0 шт):