Как программно создать транзакционный прокси? - PullRequest
3 голосов
/ 20 сентября 2011

Я создал экземпляр компонента с

Type instance = new Type(); 

и автоматически подключил его с помощью

ctx.getAutowireCapableBeanFactory().autowireBean(instance);

Метод запуска bean-компонентов выполняется ThreadPoolTaskExecuter и аннотируется @Transactional аннотация, которая не действует в этом случае. Так как возникают проблемы с отложенной загрузкой. Мне нужна транзакция здесь.

Как я могу создать транзакционный прокси и обернуть мой экземпляр?

Есть ли другой способ, кроме использования менеджера транзакций вручную?

Ответы [ 2 ]

4 голосов
/ 21 сентября 2011

Вы должны получить правильный прокси, если вы применяете BeanPostProcessors из контекста:

instance = ctx.getAutowireCapableBeanFactory().applyBeanPostProcessorsAfterInitialization(instance);
3 голосов
/ 20 сентября 2011

Вы, безусловно, можете создать подкласс PlatformTransactionManager вручную и использовать его методы для создания и фиксации или отката транзакций.

Если вы хотите проксировать объект, вам, вероятно, нужен класс org.springframework.transaction.interceptor.TransactionProxyFactoryBean.Установите экземпляр этого и вызовите getObject(), чтобы получить прокси-класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...