注释方式实现AOP编程
【PersonDaoImpl】
package com.athl.dao;
import org.springframework.stereotype.Component;
@Component
public class PersonDaoImpl implements IPersonDao {
public void save(String str) {
System.out.println("----insert into ---"+str);
}
}
【MyAop】
package com.athl.aop;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
@Component
@Aspect
public class MyAop {
// 前置通知 : 在执行目标方法之前执行
@Before("execution(* com.athl.dao.*.save(..))")
public void txstart(){
System.out.println("begin Transaction=========");
}
// 后置/最终通知:在执行目标方法之后执行 【无论是否出现异常最终都会执行】
@After("execution(* com.athl.*.*.*(..))")
public void txcommit(){
System.out.println("transaction commit============");
}
}
【applicationContext.xml】
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 开启注解扫描 -->
<context:component-scan base-package="com.athl.*"/>
<!-- 开启aop注解方式 -->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
</beans>
【test】
package com.athl.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.athl.dao.IPersonDao;
public class MyTest {
@Test
public void test(){
String str = "张三";
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
IPersonDao daoProxy = (IPersonDao)ac.getBean("personDaoImpl");
daoProxy.save(str);
}
}