gpt4 book ai didi

java - Spring AOP 使用 AspectJ 来工作还是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:44:50 26 4
gpt4 key购买 nike

正在研究Spring AOP,有如下疑惑。

据我所知,有两种方法可以将 AOP 行为实现到 Java 应用程序中:

  1. AspectJ:这是第一个使用字节码修改进行切面编织的原始AOP技术。

  2. Spring AOP:基于 Java 的 AOP 框架与 AspectJ 集成,使用动态代理进行切面编织。

我的疑问是:Spring AOP 是一个集成了 AspectJ 的 AOP 框架究竟意味着什么?那么它又要用AspectJ?或者什么?

第二个疑惑是关于Spring AOP的Spring配置,我知道可以这样实现:

1)使用Java配置类:

@Configuration
@EnableAspectJAutoProxy
@ComponentScan(basePackages=“com.example”)
public class AspectConfig {
...
}

2) 使用 XML:

<beans>
<aop:aspectj-autoproxy />
<context:component-scan base-package=“com.example” />
</beans>

因此,在这两种配置中,似乎 Spring AOP 使用 AspectJ 因为在这些配置中我有:@EnableAspectJAutoProxy

具体是什么意思?

最佳答案

这可能会回答您的问题 - 这是使用 spring-aop 的项目的 mvn dependency:tree 的摘录:

[INFO] |  +- org.springframework:spring-aop:jar:3.2.3.RELEASE:compile
[INFO] | | \- aopalliance:aopalliance:jar:1.0:compile
[INFO] | +- org.springframework:spring-aspects:jar:3.2.3.RELEASE:compile
[INFO] | | +- org.aspectj:aspectjweaver:jar:1.7.2:compile

如您所见,Spring 依赖项可传递地包含 AspectJ 编织器。

也就是说,documentation指出

Spring 2.0 introduces a simpler and more powerful way of writing custom aspects using either a schema-based approach or the @AspectJ annotation style. Both of these styles offer fully typed advice and use of the AspectJ pointcut language, while still using Spring AOP for weaving.

干杯,

关于java - Spring AOP 使用 AspectJ 来工作还是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30619855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com