Uploaded image for project: 'Spring Framework'
  1. Spring Framework
  2. SPR-5192

@LookupMethod annotation for use with component scanning

    Details

    • Type: New Feature
    • Status: Closed
    • Priority: Major
    • Resolution: Complete
    • Affects Version/s: None
    • Fix Version/s: 4.1 RC2
    • Component/s: Core
    • Labels:
      None
    • Last commented by a User:
      true

      Description

      I have recently started some work on an @LookupMethod annotation to be used in the following situation:

      • A prototype scoped bean needs to be used within a singleton
      • The singleton was created using component scanning

      Currently the most obvious solution would be to forgo component scanning for the singleton and define the lookup-method in the ApplicationContext XML or using spring-java-config, e.g:

      <!-- this could also be created using component scanning -->
      <bean id="myPrototype" class="sample.MyPrototype" scope="prototype"/>
      
      <bean id="mySingleton" class="sample.MySingleton">
        <lookup-method name="createMyPrototype" bean="myPrototype"/>
      </bean>
      

      However, since I've been using component scanning with 2.5, it doesn't feel right defining the wiring outside of the components, and it would be ideal if we could do something like the following:

      @Component
      public abstract class MySingleton {
         @LookupMethod(beanRef = "myPrototype")
         protected abstract MyPrototype createMyPrototype();
      }
      
      @Component
      public class MyPrototype {}
      

      It would be even better if @LookupMethod could work in conjunction with autowiring (by type), but that can be a subsequent feature request.

      I've started to implement a solution and will attach shortly.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                juergen.hoeller Juergen Hoeller
                Reporter:
                casey.butterworth Casey Butterworth
                Last updater:
                mirak
              • Votes:
                37 Vote for this issue
                Watchers:
                33 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:
                  Days since last comment:
                  2 years, 3 weeks, 5 days ago