读书人

透过Annotation来实现AOP

发布时间: 2012-11-09 10:18:48 作者: rapoo

通过Annotation来实现AOP

?

package com.jummy.aop; public interface UserManager {?public void addUser(String string,String name); public void delUser(int id); public void modifyUser(int id,String name,int age); }?

package com.jummy.aop; public class UserManagerImpl implements UserManager { public void addUser(String id, String name)?{ System.out.println("---UsreManagerImpl中的addUser方法的实现-----"); } public void delUser(int id) { System.out.println("-----delUser方法的实现-----"); } public void modifyUser(int id, String name, int age) { System.out.println("----modifyUser方法的实现-----"); } } ?

package com.jummy.aop; public interface MySecurityManager?{ public void security(); //也可以添加多个方法 //public void security2(); }?

import org.aspectj.lang.annotation.Aspect;?import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; /* * 我们已经把横切关注点抽取出来了 * 那就需要定义我们的Aspect了(类) */ @Aspect //使用@Aspect之前记得要引入aspectjrt.jar和aspectjweaver.jar public class MySecurityManagerImpl implements MySecurityManager { /* * 定义切入点,切入 * 该方法只是一个标识(而且只作为标识并不是常态下的方法, 并不供人调用所以没有返回值最好设置为private), 切入点的内容是一个表达式。 * 根据这个表达式就可以用来判断切入哪些对象的哪些方法 */ @Pointcut("execution(* add*(..))") /* * 下面对表达式简单说一下: execution(* add*(..))第一个*说匹配是方法的任意返回值类型 * 待会可以试验一下。add*就是表示以add开头的方法名都可以匹配想到正则表达式了吗? (..)这两个就是表示方法里所传递的参数类型也是任意匹配。 * 具体的请参考spring的开发手册, 这一点Spring讲的比较清楚。 * */ private void addAllMethod() { } /* * 定义Advice,标识在哪些切入点(切入点有ADD这是我们上面通过pointcut定义的。当然你也可以定义别的) * 的何处(何处就是指是切入点的前面呢?后面?还是其他情况)织入通知 当然除了before还有其他类型的通知。这里就不在累赘了 * */ @Before("addAllMethod()") public void security() { System.out.println("-----调用security方法-------"); } /*这里也可以添加一些其他的前置方法 * @Before("addAllMethod()") public void security2() { System.out.println("-----调用security方法2-------"); } */ }?

?????????????????????????? ?????????????????????????????????????????????????????????????????????????????????????????????

?????????????????????????????????????????????????????????????????????????????????????????????????????????????????

??????????

?

?

读书人网 >软件架构设计

热点推荐