Настройка управляемых аннотациями транзакций весной в классе @Configuration - PullRequest
17 голосов
/ 16 сентября 2010

Таким образом, в последней версии Spring мы можем использовать аннотацию @Configuration для настройки наших конфигураций для Spring. Теперь в JavaConfig можно использовать аннотацию @AnnotationDrivenTx ( @ AnnotationDrivenTx Reference Link) для настройки транзакций в нашем классе Config. Но с тех пор, как JavaConfig был выведен из эксплуатации, мне стало интересно, знает ли кто-нибудь, как настроить нечто подобное без JavaConfig и без необходимости добавлять что-либо в application-context.xml. Вот то, что я в основном имею для своего класса Config

@Configuration
@ImportResource("config/application-context.xml")
public class Config {

     public @Bean DataSource dataSource() {
           //get and return datasource
     }

     public @Bean Service1 getService1() {
          //return service1Impl
     }
}

И я бы хотел сделать Service1 транзакционным. Если у кого-то есть какие-либо идеи о том, как это сделать, или если это просто невозможно, пожалуйста, дайте мне знать.

Спасибо!

Ответы [ 3 ]

55 голосов
/ 10 мая 2012

Теперь вы можете использовать @EnableTransactionManagement.

См. Этот пост для более подробной информации: http://blog.springsource.com/2011/06/10/spring-3-1-m2-configuration-enhancements/

3 голосов
/ 18 февраля 2011

Взгляните на http://blog.springsource.com/2011/02/17/spring-3-1-m1-featurespec. Классы FeatureSpecification в Spring 3.1, такие как TxAnnotationDriven, предназначены для решения именно описанной выше проблемы.

3 голосов
/ 16 сентября 2010

Похоже, что это невозможно, согласно этому сообщению на форуме :

может быть более первоклассный механизм для включения передачи на основе аннотаций в @Configuration классы в Spring 3.1, но в то же время рекомендуется использовать @ImportResource для включения фрагмента XML, который объявляет <tx:annotation-driven/>

Подождите, но у вас, похоже, есть контекст XMLтем не мение.Почему бы не добавить <tx:annotation-driven/> к нему и использовать @Transactional?

...