菜鸟学习Spring——60s使用annotation实现简单AOP

一、概述。
      AOP大家都知道切面编程,在Spring中annotation可以实现简单的AOP列子。下面还未大家介绍几个概念:
Aspect
对横切性关注点的模块化。
Advice
对横切性关注点的具体实现。
Pointcut
它定义了Advice应用到哪些JoinPoint上,对Spring来说是方法调用。
JoinPoint
Advice在应用程序上执行的点或时机,Spring只支持方法的JoinPoint,这个点也可以使属性修改,如:Aspecj可以支持。
Weave
将Advice应用到Target Object上的过程叫织入,Spring支持的是动态织入。
Target Object
Advice被应用的对象。
Proxy
Spring AOP默认使用JDK的动态代理,它的代理是运行时创建,也可以使用CGLIB代理。
二、代码演示。
      为了实现使用annotation实现简单AOP我们还得加入下面几个包:
      SPRING_HOME/lib/aspectj/*.jar

目录结构:


UserManager.java和UserManagerImpl.java代码参照

http://blog.csdn.net/gwblue/article/details/39668211

中的UserManager.java和方法二的UserManagerImpl.java

SecurityHandler.java

	package com.tgb.spring;
	
	import org.aspectj.lang.annotation.Aspect;
	import org.aspectj.lang.annotation.Before;
	import org.aspectj.lang.annotation.Pointcut;
	
	@Aspect
	public class SecurityHandler{
		/**
		*确定需要使用checkSecurity使用方法的范围
		*/
		@Pointcut("execution(* add*(..))")
		private void addAddMethod(){}
		/**
		*Before是指在执行方法之前运行
		*After是只在执行方法之后运行
		*/
		@Before("addAddMethod()")
		private void checkSecurity(){
			System.out.println("checkSecurity");
	
		}
	
	
	}


Client.java

	package com.tgb.spring;
	
	import org.springframework.beans.factory.BeanFactory;
	import org.springframework.context.support.ClassPathXmlApplicationContext;
	
	import com.tgb.spring.UserManager;
	
	
	
	public class Client {
	
		public static void main(String[] args) {
			BeanFactory factory=new ClassPathXmlApplicationContext("applicationContext.xml");
			UserManager userManager=(UserManager) factory.getBean("userManager");
			userManager.addUser("张三", "123");
			userManager.delUser(1);
		}
	}


applcationContext.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: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.0.xsd
	           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
	           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
	<!-- 启用AspectJ -->
	<aop:aspectj-autoproxy/>
	
	<bean id="userManager" class="com.tgb.spring.UserManagerImpl" />
	<bean id="securityHandler" class="com.tgb.spring.SecurityHandler"/>
	</beans>


效果图:


三、综述。

      利用annotation方式简单的实现了AOP,注解是一种侵入性比较强的AOP实现方式,它的优点是让开发者更加方便的使用AOP。

posted @ 2014-10-20 11:32  夏至冬末  阅读(273)  评论(0编辑  收藏  举报