AOP使用跟配置
AOP使用和配置
AOP使用代码:
一、Dao层
接口:AopTestDao
package com.sshcp.dao; public interface AopTestDao { public void aopTest(); }
实现类:AopTestDaoImpl
package com.sshcp.dao.impl; import javax.annotation.Resource; import org.springframework.stereotype.Component; import com.sshcp.dao.AopTestDao; @Component("aopTestDao") public class AopTestDaoImpl implements AopTestDao { public void aopTest() { // TODO Auto-generated method stub System.out.println("dao 层 "); } }
service层:
接口类:AopServiceI
package com.sshcp.service.aopi; public interface AopServiceI { public void aopTestMothod(); }
实现类:AopServiceImpl
package com.sshcp.service.aopi.impl; import javax.annotation.Resource; import org.springframework.stereotype.Component; import com.sshcp.dao.AopTestDao; import com.sshcp.service.aopi.AopServiceI; @Component("aopServiceI") public class AopServiceImpl implements AopServiceI { private AopTestDao aopTestDao ; // 注入dao层AopTestDao public AopTestDao getAopTestDao() { return aopTestDao; } @Resource public void setAopTestDao(AopTestDao aopTestDao) { this.aopTestDao = aopTestDao; } public void aopTestMothod() { // TODO Auto-generated method stub System.out.println("aop test service here "); } }
切面类:AspectTest
package com.sshcp.aspect; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component; @org.aspectj.lang.annotation.Aspect @Component public class AspectTest { @Pointcut("execution(* com.sshcp.service.aopi.impl.AopServiceImpl.aop*(..)))") public void testMothod(){ } @Before("testMothod()") public void beforeMothe(){ System.out.println("121212121212121212 Before......."); } @After("testMothod()") public void afterMothe(){ System.out.println("2323232323232323232 After........"); } }
Spring xml 中加入如下配置:
<context:annotation-config /> <aop:aspectj-autoproxy /> <context:component-scan base-package="com.sshcp" />
测试代码:
package com.hibernate.test; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.sshcp.service.aopi.AopServiceI; public class AopTest { @Test public void test(){ ApplicationContext app = new ClassPathXmlApplicationContext("classpath:applicationContext-c3p0.xml"); AopServiceI as = (AopServiceI)app.getBean("aopServiceI"); as.aopTestMothod(); } }
测试打印出的信息:
121212121212121212 Before.......
aop test service here
2323232323232323232 After........
搞定