Mam fabrykę fasoli rodzicielskiej i chciałabym, żeby w niej był BeanPostProcessor, aby publikować komponenty procesu w potomnych fabrykach. AFAIK, nie jest to obsługiwane wiosną. Jakie są moje alternatywy? (z wyjątkiem oczywiście deklarowania postprocesora w XML każdej fabryki podrzędnej)Pobierz procesory bean bean w fabryce komponentów bean rodzicielskiej, aby przetworzyć fasolę w potomnych fabrykach.
5
A
Odpowiedz
0
Jednym z "rozwiązań" jest dodanie procesora pocztowego do kontekstu podrzędnego, który wykonuje macierzyste procesory pocztowe. To jest technika, którą wykorzystaliśmy. Jest to potencjalnie niebezpieczne i nie najlepsze ćwiczenie wiosenne IMO.
/**
* A {@linkplain BeanPostProcessor} that references the BeanPostProcessors in the parent context and applies them
* to context this post processor is a part of. Any BeanPostProcessors from the parent that are {@link BeanFactoryAware} will
* have the {@linkplain BeanFactory} from the child context set on them during the post processing. This is necessary to let such post processors
* have access to the entire context.
*/
public class ParentContextBeanPostProcessor implements BeanPostProcessor {
private final Collection<BeanPostProcessor> parentProcessors;
private final BeanFactory beanFactory;
private final BeanFactory parentBeanFactory;
/**
* @param parent the parent context
* @param beanFactory the beanFactory associated with this post processor's context
*/
public ParentContextBeanPostProcessor(ConfigurableApplicationContext parent, BeanFactory beanFactory) {
this.parentProcessors = parent.getBeansOfType(BeanPostProcessor.class).values();
this.beanFactory = beanFactory;
this.parentBeanFactory = parent.getBeanFactory();
}
/** {@inheritDoc} */
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
for (BeanPostProcessor processor : parentProcessors) {
if (processor instanceof BeanFactoryAware) {
((BeanFactoryAware) processor).setBeanFactory(beanFactory);
}
try {
bean = processor.postProcessBeforeInitialization(bean, beanName);
} finally {
if (processor instanceof BeanFactoryAware) {
((BeanFactoryAware) processor).setBeanFactory(parentBeanFactory);
}
}
}
return bean;
}
/** {@inheritDoc} */
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
for (BeanPostProcessor processor : parentProcessors) {
if (processor instanceof BeanFactoryAware) {
((BeanFactoryAware) processor).setBeanFactory(beanFactory);
}
try {
bean = processor.postProcessAfterInitialization(bean, beanName);
} finally {
if (processor instanceof BeanFactoryAware) {
((BeanFactoryAware) processor).setBeanFactory(parentBeanFactory);
}
}
}
return bean;
}
}
Powiązane problemy
- 1. Spring Security dependency bean bean
- 2. Używanie niektórych ziaren w klasie bean bean Filter?
- 3. Różnica między zarządzanym komponentem bean a komponentem bean sesji
- 4. Spring ApplicationContext Bean Scope
- 5. @ Beope ("prototyp") zakres komponentu bean nie tworząc nowego komponentu bean
- 6. Jak ręcznie wyposażyć komponent bean w sprężynę?
- 7. Jak uzyskać zarządzaną nazwę komponentu bean z wnętrza komponentu bean?
- 8. Przekazywanie komponentu bean bean jako parametru do narzędzia Facelet obejmuje:
- 9. JAXB Bean Generation
- 10. JEE6 @ApplicationScoped bean i współbieżność
- 11. Bean Validation API
- 12. Wiosna Bean autowiring błąd
- 13. Spring - zamień @Service bean w teście
- 14. Jak uzyskać dostęp do zarządzanych komponentów bean @ViewScoped z serwletów?
- 15. Do czego służy prototyp Spring Bean?
- 16. Jak skonfigurować uruchamiany komponent bean?
- 17. Rejestrowanie wstrzyknięcia komponentu bean/zależności
- 18. Wiosna Bean Validation @Valid zabiegom
- 19. W jaki sposób przekazujesz parametry (z javascript) do remoteCommand (a następnie przesyłasz je do komponentów bean)?
- 20. WildFly Swarm Nullpointer @Inject bean
- 21. Czy można zrezygnować z obsługi Spring bean?
- 22. Korzystanie bezpaństwowców fasoli EJB w Entity Bean
- 23. Korzystanie z adnotacji `@ ConfigurationProperties` w metodzie` @ Bean`
- 24. Wiosna, współpracując z @Configuration i @Bean adnotacji
- 25. Jak ustawić listę Jaxb2Marshaller XmlAdapters w Spring bean poprzez XML?
- 26. Wstrzyknąłem HttpServletRequest do komponentu bean. Jak mogę go przetestować?
- 27. Czy komponent bean potomny automatycznie staje się prototypem, jeśli komponent bean rodzicielski został zdefiniowany jako prototypowy
- 28. Jak wybrać instancję Spring bean w środowisku wykonawczym
- 29. "Wyłączyć" sprawdzanie poprawności komponentu bean (javax.validation.constraints)
- 30. Nazwa właściwości Typesafe dla komponentu bean Java
Nie ma innych alternatyw, o których wiem, poza oszczędnym wykorzystaniem kontekstów rodzic-dziecko. – skaffman