笔记之用....
UserService
package com.spring.test; import org.springframework.stereotype.Component; @Component public interface UserService { public void createUser(); public void deleteUser(); public void updateUser(int id); }
实现类UserDao
package com.spring.test; import org.springframework.stereotype.Component; @Component public class UserDao implements UserService { public void createUser() { System.out.println("user saved..."); } public void deleteUser(){ System.out.println("delete user..."); } public void updateUser(int id){ System.out.println("update user..."); } }
配置文件
<?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" xmlns:tx="http://www.springframework.org/schema/tx" 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 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd "> <context:annotation-config></context:annotation-config> <context:component-scan base-package="com.spring.test,com.spring.log"></context:component-scan> <aop:aspectj-autoproxy></aop:aspectj-autoproxy> </beans>
要切入的
package com.spring.log; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component; @Aspect @Component public class LogInterceptor { @Before(value="execution (* com.spring.test.*.*(..))") public void beforeMethod(JoinPoint point){ System.out.println("方法执行前执行"); System.out.println(point.getTarget()+"类的"+point.getSignature().getName()+"方法执行!!!"); } @After(value="execution (* com.spring.test.*.*(..))") public void afterMethod(JoinPoint point){ System.out.println("方法执行后执行"); System.out.println(point.getTarget()+"类的"+point.getSignature().getName()+"方法执行完毕!!!"); } }
Junit测试
package com.junit.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.spring.test.UserService; public class Test { @org.junit.Test public void Test(){ ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService service = (UserService) ctx.getBean("userDao"); service.createUser(); } }
测试结果:
方法执行前执行
com.spring.test.UserDao@1977b9b类的createUser方法执行!!!
user saved...
方法执行后执行
com.spring.test.UserDao@1977b9b类的createUser方法执行完毕!!!