Hi,
I have BeanFactoryPostProcessor to add additional beans definitions and add references to these beans to list, which is a property of a bean (providers).
The additional beans definitions are taken from database and next added to "mainBean":Code:<bean id="mainBean" class="com.example"> <property name="providers"> <list> <ref bean="provider1" /> </list> </property> </bean>
And I'm using @Transactional annotation on "mainBean". I've enabled transaction management in spring configuration file (<tx:annotation-driven>). But I don't have transaction on "mainBean".Code:ApplicationMetadataDAOInterface metaDataDAO = (ApplicationMetadataDAOInterface) beanFactory.getBean("applicationMetadataDAO"); Map<String, String> applicationMetadata = metaDataDAO.getApplicationMetadata(); MainBeanInterface mainBean = (MainBeanInterface) beanFactory.getBean("mainBean"); StringBuffer providersDefinitionBuffer = new StringBuffer(); List<String> providersDefinitionList = new ArrayList<String>(); /** * Extract all Authentication Provider definitions */ for (String metadataKey: applicationMetadata.keySet()) { if (metadataKey.startsWith("some_text")){ providersDefinitionBuffer.append(applicationMetadata.get(metadataKey)); providersDefinitionBuffer.append("\n"); providersDefinitionList.add(metadataKey); } } XmlBeanFactory xmlFactory = createDynamicXmlFactory(beanFactory, providersDefinitionBuffer); List<ProviderInterface> configuredProviders = authenticationManager.getProviders(); for (String providerKey: providersDefinitionList) { ProviderInterface provider = (ProviderInterface) xmlFactory.getBean(providerKey); configuredProviders.add(provider); } mainBean.setProviders(configuredProviders);
Why transaction annotations are not processed? Please could you explain me what I've missed? Or maybe it is a better idea to add some additional elements to list than getting it from database and then using BeanFactoryPostProcessor?
Thanks for all your help


Reply With Quote