2017-12-20 2 views
0

Spring 5 bietet eine programmatische Registrierung mit GenericApplicationContext#registerBean. Leider akzeptiert diese Methode nur Class und nicht ParameterizedType, um generische typisierte Bean abrufen zu können.Spring 5: Generische Bean programmatisch registrieren

Gibt es eine andere Möglichkeit, generische Bean zu registrieren?

Antwort

0

Es gibt einige Factory-Methoden, um die Beans programmatisch zu registrieren.

Sie können auch ConfigurableBeanFactory von ConfigurableApplicationContext verwenden und registerSingleton verwenden, um die Bean des Klassentyps zu registrieren.

@SpringBootApplication 
public class Application { 



    public static void main(String[] args) { 
     ConfigurableApplicationContext applicationContext=SpringApplication.run(Application.class, args); 
     ConfigurableBeanFactory beanFactory=applicationContext.getBeanFactory(); 
     beanFactory.registerSingleton("testBean", new Application().new TestClass<String>()); 
     TestClass<String> testObj=applicationContext.getBean(TestClass.class); 
     testObj.testMethod("hello"); 
    } 

    public class TestClass<T>{ 
     public void testMethod(T t) { 
      System.out.println("Test Method");  
     }  
    } 

}