Sorry guys, I still did not get the need for the @Lookup annotation when there is the @Bean. In both cases annotated methods return a bean instance of a bean declared, say, as a @Component. @Bean in my understanding provides factory logic to the bean creation process - we are eligible to choose this or that bean implementation depending on method parameter values. @Lookup seems to do similar things except that it is less versatile - no choice of implementation provided. So what are the limitations of the @Bean that made @Lookup necessary. And I wonder why there are those limitations with @Bean, and how they are resolved in/with @Lookup.