您的位置:首页 > 编程语言 > Java开发

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

2014-10-20 11:32 441 查看
一、概述。

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代码参照

/article/1330953.html

中的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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: