1. 引入相关jar文件:aspectjrt.jar 、aspectweaver.jar 、cglib-nodep-2.1_3.jar、commons-logging.jar、spring.jar
2、spring核心配置文件*.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-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<bean id="userManager" class="com.jzg.spring.UserManagerImpl"/>
<!-- 切面类 -->
<bean id="logInterceptor" class="com.jzg.spring.LogInterceptor"/>
<aop:config>
<!-- 先声明一个切面对象,引用<bean id="securityHandler">所指向的java类 -->
<aop:aspect id = "securityAspect" ref="logInterceptor">
<!-- 声明窃取规则 这里是匹配任意返回值的无参add前缀 的方法 -->
<!-- <aop:pointcut id="addAllMethod" expression="execution(* add*(..))"/> -->
<!-- 声明切入方法 -->
<!-- 按照AllMethod切入点的规定,在spring包下所有方法执行后都会执行一次 checkSecurity() 方法 -->
<!-- execution(* com.jzg.spring.*.*(..)), 这里是匹配spring包下的所有方法 -->
<aop:pointcut id="AllMethod" expression="execution(* com.jzg.spring.*.*(..))"/>
<aop:before method="mybeforeMethod" pointcut-ref="AllMethod"/>
<aop:after method="myafterMethod" pointcut-ref="AllMethod"/>
</aop:aspect>
</aop:config>
</beans>
3、相关java类
package com.jzg.spring;
public class LogInterceptor {
public void mybeforeMethod(){
System.out.println("mybeforeMethod执行前切入日志-----------------");
}
@SuppressWarnings("unused")
private void myafterMethod(){
System.out.println("myafterMethod()执行完成后切入日志------------");
}
}
package com.jzg.spring;
public class UserManagerImpl{
public void delUser(int userId) {
System.out.println("----UserManagerImpl.delUser()---");
}
public String findUserById(int userId) {
System.out.println("----UserManagerImpl.findUserById()---");
return "zhangsan";
}
public void modifyUser(int userId, String userName, String password) {
System.out.println("----UserManagerImpl.modifyUser()---");
}
public void addUser(String userName, String password) {
System.out.println("UserManagerImpl.addUser()添加用户执行中-----");
}
}
package test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.jzg.spring.UserManagerImpl;
public class Test {
private static UserManagerImpl userManager;
private static BeanFactory factory;
static{
factory = new ClassPathXmlApplicationContext("beans.xml");
userManager = (UserManagerImpl)factory.getBean("userManager");
}
@org.junit.Test
public void testadd(){
userManager.addUser("张三","123");
}
@org.junit.Test
public void testdel(){
userManager.delUser(0);
}
@org.junit.Test
public void testfind(){
userManager.findUserById(1);
}
@org.junit.Test
public void testmodify(){
userManager.modifyUser(1, "userName", "password");
}
public static UserManagerImpl getUserManager() {
return userManager;
}
public static void setUserManager(UserManagerImpl userManager) {
Test.userManager = userManager;
}
public static BeanFactory getFactory() {
return factory;
}
public static void setFactory(BeanFactory factory) {
Test.factory = factory;
}
}