我的印象是,Spring AOP最适合用于特定于应用程序的任务,如安全性、日志(log)记录、事务等,因为它使用自定义Java5注释作为框架.然而,AspectJ在设计模式方面似乎更友好.

有人能强调在Spring应用程序中使用Spring AOP和AspectJ的各种优缺点吗?

推荐答案

spring AOP职业选手

  • 它比AspectJ更简单,因为您不必使用LTW(load-time weaving)或AspectJ编译器.

  • 它使用代理模式和decorator

spring AOP犯罪

  • 这是基于代理的AOP,所以基本上只能使用方法执行连接点.
  • 在同一类中调用另一个方法时,不会应用方面.
  • 可能会有一点运行时开销.
  • Spring AOP不能向任何不是由Spring工厂创建的东西添加方面

AspectJ专业人士

  • 这支持所有连接点.这意味着你可以做任何事.
  • 与Spring AOP相比,运行时开销更少.

AspectJ Cons

  • 小心.判断你的相位是否只被编织成你想要的样子.
  • 您需要使用AspectJ编译器进行额外的构建过程,或者必须设置LTW(加载时编织)

Java相关问答推荐

使用log 4j2格式的Hibernate 显示SQL日志(log)

Apache POI:使用反射获取zoom 级别

根据对象和值的参数将映射<;T、值&>转换为列表<;T&>

JavaFX Maven Assembly插件一直打包到错误的JDK版本

在bash中将数组作为Java程序的参数传递

Spring data JPA/Hibernate根据id获取一个列值

我不能再在Android Studio Hedgehog上用Java语言创建新项目了吗?

暂停计时器

如何在ApachePOI中将图像添加到工作表的页眉?

我如何知道MediaDiscoverer何时完成发现介质?

如何对多个字段进行分组和排序?

对字符串长度进行排序,但颠倒了顺序(最长字符串在前)

在Java 15应用程序中运行Java脚本和Python代码

Java组件项目中的JavaFX对话框国际化

找出承载Cargo 的最小成本

在Java泛型中使用通配符时,如何推断类型

在Spring Boot中使用咖啡因进行缓存-根据输出控制缓存

元音变音字符:如何在 Java 中将Á<0x9c>转换为Ü?

如何解释泛型类层次 struct 中子类的返回值类型和参数定义?

Java-Apache BufferedHttpEntity 在发送请求时加载整个文件