Mi chiedo se quanto segue è possibile. A scopo di test, desidero che vengano dichiarate diverse classi di simulazione nel contesto dell'applicazione per diversi test. Questi sono test di accettazione, utilizzando il client Jersey REST. C'è un modo per dichiarare dinamicamente un bean in fase di runtime? Spring ha un'API per consentire modifiche al contesto dell'applicazione dopo che il contesto è stato caricato?dichiarare dinamicamente i fagioli in fase di esecuzione in primavera
15
A
risposta
21
Il modo comune di disporre di bean diversi nel contesto dell'applicazione è l'utilizzo dei profili. Si può leggere su profili nei seguenti posti di origine primavera:
- http://blog.springsource.org/2011/02/14/spring-3-1-m1-introducing-profile
- http://blog.springsource.org/2011/06/21/spring-3-1-m2-testing-with-configuration-classes-and-profiles/
Circa la prima domanda, è possibile dichiarare i fagioli a runtime via BeanDefinitionRegistry.registerBeanDefinition()
metodo, ad esempio:
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(SomeClass.class);
builder.addPropertyReference("propertyName", "someBean"); // add dependency to other bean
builder.addPropertyValue("propertyName", someValue); // set property value
DefaultListableBeanFactory factory = (DefaultListableBeanFactory) context.getBeanFactory();
factory.registerBeanDefinition("beanName", builder.getBeanDefinition());
È anche possibile registrare un'istanza del bean singleton (già configurata) con
context.getBeanFactory().registerSingleton(beanName, singletonObject)
Infine, Primavera non fornisce un modo chiaro per cambiare un fagiolo dopo l'aggiornamento del contesto, ma le approachs più comuni sono:
- vicino e aggiornare di nuovo (obiously)
- Usa un proxy e scambiare il target Source in runtime: vedere Replace spring bean in one context with mock version from another context (per un esempio).
Problemi correlati
- 1. cambia dinamicamente i fagioli di primavera
- 2. Come collegare i fagioli interdipendenti in primavera?
- 3. Change fagiolo proprietà/valore in fase di esecuzione in primavera
- 4. fagioli condizionali utilizzando primavera
- 5. getElementById Dove elemento viene creato dinamicamente in fase di esecuzione
- 6. Primavera fagioli campi iniezione
- 7. Partendo nuova transazione in primavera fagioli
- 8. Registrati Groovy fagioli in primavera java config
- 9. Primavera XML fagioli interna domanda
- 10. Spring Data Elasticsearch @Document indexName definito in fase di esecuzione
- 11. modello di strategia con i fagioli di primavera
- 12. Sostituisci bean in fase di esecuzione
- 13. Trova i pacchetti dipendenti in Eclipse in fase di esecuzione
- 14. Primavera non può autowire Mappa di fagioli
- 15. Castle Windsor Resolve in fase di esecuzione
- 16. Primavera non può vedere i fagioli tra fagioli servlet al contesto e contextConfigLocation
- 17. Come selezionare l'istanza del bean Spring in fase di esecuzione
- 18. Modificare i valori enum in fase di esecuzione?
- 19. Drools recupera i dati dal database in fase di esecuzione
- 20. Come fare riferimento all'assemblaggio in mvc in fase di esecuzione
- 21. metodo call in fase di esecuzione
- 22. Modifiche al vtable in fase di esecuzione
- 23. Compilazione sass/scss di ASP.NET in fase di esecuzione e in fase di compilazione?
- 24. scegliere una monade in fase di esecuzione
- 25. lettura delle carte proprietà dinamica in primavera gestito fagioli
- 26. Aggiungere animazione in fase di esecuzione
- 27. Fagioli candidati Autowire personalizzati nella primavera 3
- 28. Modifica implementazione/classe in fase di esecuzione
- 29. Caricamento giare in fase di esecuzione
- 30. java.util.NoSuchElementException creando primavera dati JPA fagioli repository