第一步:配置appcationContext1.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:p="http://www.springframework.org/schema/p"
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.pp"/>
<aop:aspectj-autoproxy/>
</beans>
第二步:创建一个UserDao接口类
package com.pp.demo2;
public interface UserDao {
void save();
void update();
}
第三步:创建UserDaoImpl类,在改类中使用@Component并且value值为实体类的小写userDao
package com.pp.demo2;
import org.springframework.stereotype.Component;
@Component(value = "userDaos")
public class UserDaoImpl implements UserDao {
public void save() {
System.out.println("保存");
}
public void update() {
System.out.println("更新");
}
}
第四步:创建MyAspectAnno代理类
package com.pp.demo2;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class MyAspectAnno {
/* @Before(value = "MyAspectAnno.fn()")
public void log(){
System.out.println("前置通知");
}*/
/*@After(value = "MyAspectAnno.fn()")
public void logs(){
System.out.println("后置通知");
}*/
@Around(value = "MyAspectAnno.fn()")
public void around(ProceedingJoinPoint joinPoint) throws Throwable {
joinPoint.proceed();
System.out.println("环绕日志");
}
@Pointcut(value = "execution(public * com.pp.demo2.UserDaoImpl.save())")
public void fn(){
}
}
以上内容首先要写入一个切入点@Pointcut后面的值填写execution(public * com.pp.demo2.UserDaoImpl.save()),接下来写入一个@Before前置通知,后面要写切入点,要和切入点的一个关系,如果要做后置通知,用@After,环绕通知使用@Around
第五步:编写测试类
package com.pp.demo2;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext1.xml")
public class Demo3 {
@Resource(name = "userDaos")
private UserDao userDao;
@Test
public void run(){
userDao.save();
}
}