SpringAOP和AspectJ,什么区别?

具体区别:

  • Spring AOP
    • 基于代理机制(JDK 动态代理或 CGLIB)。
    • 只支持方法级别的拦截。
    • 运行时织入,配置简单,适用于常见的 Spring 项目。
  • AspectJ
    • 基于字节码修改,功能更强大。
    • 支持方法、构造器、字段等多种切入点。
    • 编译时或类加载时织入,适合复杂的 AOP 需求。

代码案例:

Spring AOP 使用示例
@Aspect
@Component
public class LoggingAspect {

    @Before("execution(* com.example.service.*.*(..))")
    public void logBefore(JoinPoint joinPoint) {
        System.out.println("Spring AOP: Before method " + joinPoint.getSignature().getName());
    }
}

@Service
public class MyService {
    public void perform() {
        System.out.println("Performing service...");
    }
}
AspectJ 使用示例
@Aspect
public class LoggingAspect {

    @Before("execution(* com.example.service.*.*(..))")
    public void logBefore(JoinPoint joinPoint) {
        System.out.println("AspectJ: Before method " + joinPoint.getSignature().getName());
    }
}

public class MyService {
    public void perform() {
        System.out.println("Performing service...");
    }
}

// AspectJ配置(通常在pom.xml中配置)
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>aspectj-maven-plugin</artifactId>
            <version>1.12.0</version>
            <configuration>
                <complianceLevel>1.8</complianceLevel>
                <source>1.8</source>
                <target>1.8</target>
                <aspectLibraries>
                    <aspectLibrary>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjrt</artifactId>
                    </aspectLibrary>
                </aspectLibraries>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>test-compile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

总结:

  • Spring AOP 适合简单的 AOP 使用场景,配置方便。
  • AspectJ 提供更强大和细粒度的 AOP 功能,适合复杂项目。
  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值