0

를 사용하는 경우 봄 트랜잭션을 사용하는 방법, 제작 한 여러 데이터 소스는 보이지 않는다 BeanDefinitionBuilder 그러나 트랜잭션 주석을 사용하여 sessionFactory에 작동하는 이 분산 MySQL 데이터베이스를 사용하는 경우 GenericApplicationContext

((SqlSessionTemplate) context.getBean ('빈 이름'))를 취소하려면 ("XXXX", PARAMS)

당신이 설명 할 내가 놓친 한 것을

아래) 방법은?

Private GenericApplicationContext context = new GenericApplicationContext(); 

BeanDefinitionBuilder sessionFactoryBuilder = BeanDefinitionBuilder.rootBeanDefinition(org.mybatis.spring.SqlSessionFactoryBean.class); 
sessionFactoryBuilder.addPropertyReference("dataSource", "dataSource" + beanName); 
sessionFactoryBuilder.addPropertyValue("configLocation", "/sqlmap.xml"); 
context.registerBeanDefinition("sqlSessionFactory" + beanName, sessionFactoryBuilder.getBeanDefinition()); 

BeanDefinitionBuilder transactionManagerBuilder = BeanDefinitionBuilder.rootBeanDefinition(org.springframework.jdbc.datasource.DataSourceTransactionManager.class); 
transactionManagerBuilder.addPropertyReference("dataSource", "dataSource" + beanName); 
context.registerBeanDefinition("transactionManager",transactionManagerBuilder.getBeanDefinition()); 

ctx.refresh(); 

답변

0

아래 코드를 추가하여 작동하는지 확인하십시오.

ConfigurableListableBeanFactory factory = context.getBeanFactory(); 
AspectJAwareAdvisorAutoProxyCreator aspectJPostProcessor = new AspectJAwareAdvisorAutoProxyCreator(); 
aspectJPostProcessor.setBeanFactory(factory); 
aspectJPostProcessor.setProxyClassLoader(context.getClassLoader()); 
factory.addBeanPostProcessor(aspectJPostProcessor);