开发者社区> 问答> 正文

请问我在Spring IOC环境中 new Object ,这种插入事物管理吗

请问我在Spring IOC环境中 new Object ,这种插入事物管理吗.

举例

MyService service = new MyService();

service.updateXXX();

这个 updateXXX.是否开启事物啊。我用的 @Transcationl 这种注解

展开
收起
a123456678 2016-03-18 15:31:21 2181 0
1 条回答
写回答
取消 提交回答
  • 可以。

    Spring 支持三种AOP weaving.

    1. Compile time weaving.
    2. Load time weaving.
    3. Runtime Weaving

    通常我们开发只用到了第三种,这是大家熟悉的方式。

    你所说的方法可以通过 Compile Time Weaving方式实现。 Spring 2.5 引入 AspectJ,提供了 @Configurable 来实现compile time weaving.

    你需要作的是:

    1. 在你类加上 @Configurable
    2. 配置 AspectJ Compiler (加入 Spring-Aspects.jar 编译), STS提供了 AJDT ,我一般使用 maven plugin.

    编译过后,如果想知道 AspectJ Compiler做了,可以再反编译你的类的class 文件,会发现内容丰富了很多(通过 Aspect 相关的 API 加入其它注入内容)。

    通过这种方式,编译过来的类,不管是使用 new Object还是 Reflect 方式创建新对象时,相关的资料就会注入,使用时和普通 Spring Beans 没太大差别。

    它可以很好的解决在 Spring 中管理一些非 Spring 容器的类。如在 JPA EntityListener, JSF Converter, Components 中使用Spring Beans。

    第二种情况也是有很多例子,特别是一些监控方面的程序,用 Load Time 比较多,Spring 自己提供了 Tomcat 等的 Loadtime Agents, 就是这种情况.

    2019-07-17 19:06:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多