【发布时间】:2015-02-04 15:07:33
【问题描述】:
我正在学习 Spring Core 认证,我对 Spring 如何处理 AOP 有疑问。
阅读文档似乎了解在 Java 中获取 AOP 的方法有 2 种:
使用 AspectJ 将字节码修改用于切面编织提供了成熟的面向切面编程语言。 (所以在我看来,AspectJ 是一种不同的语言,可以与 Java 集成以提供 AOP 功能)。
Spring AOP:用于使用动态代理进行方面编织而不是字节码修改的 Spring 框架。
所以我的疑惑主要有以下几点:
1) 阅读文档发现以下方法可以将 AOP 支持 添加到我的 Spring 应用程序中:
使用 JAVA 配置类:
@Configuration
@EnableAspectJAutoProxy
@ComponentScan(basePackages=“com.example”)
public class AspectConfig {
...
}
使用 XML 配置:
<beans>
<aop:aspectj-autoproxy />
<context:component-scan base-package=“com.example” />
</beans>
正如您在两种配置中看到的,都引用了 AspectJ:
@EnableAspectJAutoProxy
和
<aop:aspectj-autoproxy />
为什么?如果 Spring 使用 Spring AOP 而不是 AspectJ 为什么我在 Spring 中配置 AOP 时会引用 AspectJ?
2) 在前面的示例中,展示了两种配置 Spring 的方法:Java 配置类 和 XML 配置。我知道存在第三种配置 Spring 应用程序的方法:使用注解。那么存在使用注解配置 AOP 的方法吗?
【问题讨论】:
标签: java spring spring-mvc aop spring-aop