***:注解配置AOP注解配置AOP(使用AspectJ类库实现),大致分为三步:1.使用注解@Aspect定义Aspect,定义切面中的入口点(@Pointcut)和通知类型(@Before,@AfterReturning,@After,@AfterThrowing,@Around)。2.开发需要拦截的类。3.将aspect配置成xml,当然我们也可以使用自动扫描bean的方式。在这种情况下,它将由SpringAoP容器管理。其他需要引用aspectJ的jar包:aspectjweaver.jaraspectjrt.jar实例:User.javapackagecom.bjsxt.model;publicclassUser{privateStringusername;privateStringpassword;publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}}/***接口类*/packagecom.bjsxt.dao;importcom.bjsxt.model.User;publicinterfaceUserDAO{publicvoidsave(Useruser);}现实接口:packagecom.bjsxt.dao.impl;importorg.springframework.stereotype.Component;importcom.bjsxt.dao.UserDAO;importcom.bjsxt.model.User;@Component("u")publicclassUserDAOImplimplementsUserDAO{publicvoidsave(Useruser){System.out.println("usersave11d!");/*thrownewRuntimeException("exception");*///抛异常}}操作类:packagecom.bjsxt.service;importjavax.annotation.Resource;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.stereotype.Component;importcom.bjsxt.dao.UserDAO;importcom.bjsxt.model.User;@Component("userService")publicclassUserService{privateUserDAOuserDAO;publicvoidinit(){System.out.println("init");}publicvoidadd(Useruser){userDAO.save(user);}publicUserDAOgetUserDAO(){returnuserDAO;}@Resource(name="u")publicvoidsetUserDAO(UserDAOuserDAO){this.userDAO=userDAO;}publicvoiddestroy(){System.out.println("destroy");}}加入aoppackagecom.bjsxt.aop;importorg.aspectj.lang.annotation.After;importorg.aspectj.lang.annotation.AfterReturning;importorg.aspectj.lang.annotation.AfterThrowing;importorg.aspectj.lang.annotation.Aspect;importorg.aspectj.lang.annotation.Before;importorg.aspectj.lang.annotation.Pointcut;importorg.springframework.stereotype.Component;@Aspect@ComponentpublicclassLogInterceptor{@Pointcut("执行(公共*com.bjsxt.service..*.add(..))")publicvoidmyMethod(){};/*@Before("执行(publicvoidcom.bjsxt.dao.impl.UserDAOImpl.save(com.bjsxt.model.User))")*/@Before("myMethod()")publicvoidbefore(){System.out.println("methodstaet");}@After("myMethod()")publicvoidafter(){System.out.println("methodafter");}@AfterReturning("执行(public*com.bjsxt.dao..*.*(..))")publicvoidAfterReturning(){System.out.println("methodAfterReturning");}@AfterThrowing("执行(public*com.bjsxt.dao..*.*(..))")publicvoidAfterThrowing(){System.out.println("methodAfterThrowing");}}配置文件
