【问题标题】:@Transactional and GenericApplicationContext don't work together@Transactional 和 GenericApplicationContext 不能一起工作
【发布时间】:2012-11-06 07:37:46
【问题描述】:

我正在通过注释使用@Transactional 和事务管理(tx:annotation-driven...)。当我使用 GenericApplicationContext 创建应用程序上下文并从中获取一些 bean 时遇到问题:

GenericApplicationContext ctx = new GenericApplicationContext();

// Load beans definitions 
XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(ctx);
xmlReader.loadBeanDefinitions(new ClassPathResource(CONTEXT_PATH));

// Register the datasource 
ctx.getBeanFactory().registerSingleton(CONTEXT_DATASOURCE_BEAN_NAME, dataSource);

// Get the service
ServiceInterface service = (ServiceInterface) ctx.getBean("service");

我有 ServiceInterface 的实例,但我想拥有包含交易信息的代理。

你能解释一下我错过了什么吗?

【问题讨论】:

  • 究竟是什么不起作用?你如何配置交易?
  • 我在服务和 dao 类上使用@Transactional 注释,并且在配置 xml 中有 。在上面显示的代码中,我调用 bean“服务”并获取它,但是是类的实例,但我需要带有 TransactionInterceptor 的代理。以我展示的方式创建上下文后,如何进行事务注释?
  • 基本上我的问题非常类似于:forum.springsource.org/showth...-via-a-factory 我想在 bean 工厂创建的 bean 上进行事务。从 bean factory 获取 bean 后如何进行事务注解?
  • 您好,Stack Overflow 是一个问答网站,而不是论坛。您无需在标题中大喊“已解决”,也无需将答案编辑到问题本身中。只需发布一个正常的答案——在时间允许的情况下——然后将其标记为已接受。它将在列表和搜索中显示为“已解决”。我回滚了你的更改。

标签: java spring spring-transactions


【解决方案1】:

需要在 ctx.getBean() 之前调用 ctx.refresh()。然后将调用 BeanPostProcessors。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-24
    • 2019-02-17
    • 1970-01-01
    • 2012-01-30
    • 2014-01-07
    • 2019-08-17
    • 2016-11-23
    • 2019-02-18
    相关资源
    最近更新 更多