Spring-Aop的学习总结——2——注解实现aop

今天,学习了如何通过注解方式来实现aop,学完发现,还是xml方式更好用,在企业中,用xml还是居多,所以,学习只通过一个简单的例子来实现一下aop:
依旧是建立PersonDao

public interface PersonDao {
    public void savePerson();
}

创建PersonDao的实现类PersaoDaoImpl,并加上@Repository注解,自动生成对象。

public PersonDaoImpl() {
        // TODO Auto-generated constructor stub
        System.out.println("=========");
    }

创建我们的切面Transcation:并加上Component注解,自动为切面生成对象:
加上,@Aspect注解,声明这是一个切面

@Component("transcation")
@Aspect
public class Transcation {
    @Pointcut("execution(* com.my.spring.aop.annoation.PersonDaoImpl.*(..))")
    private void aa() {}//方法签名
    @Before("aa()")
    public void beginTranscation(JoinPoint joinPoint) {
        String  methodName = joinPoint.getSignature().getName();
        System.out.println("连接点的名称:"+methodName);
        System.out.println("目标类:"+joinPoint.getTarget().getClass());
        System.out.println("beginTranscation....");

    }

    @AfterReturning("aa()")
    public void commit(JoinPoint joinPoint) {
        System.out.println("commit..........");
    }
    public Transcation() {
        // TODO Auto-generated constructor stub
        System.out.println("transcation.......");
    }

下面我们来解释一下里面的注解和一些细节:

@Pointcut("execution(* com.my.spring.aop.annoation.PersonDaoImpl.*(..))")
相当于一个切入点,并生面切入点表达式:跟xml配置中的
<aop:pointcut expression="execution(com.my.spring.aop.annoation.PersonDaoImpl.*(..))"/> 
作用相同!
private void aa();
声明一个方法函数:
类似于为切入点表达式声明一个id为:aa();
@Before("aa()")
前置通知的注解,括号里面的aa()声明的在连接点之前执行。
@AfterReturning("aa()")
后置通知的注解,括号里面的aa()声明的在连接点之之后执行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值