spring中AOP——注解实现

原创 2016年05月30日 20:48:22
之前在刚接触AOP的时候总是感觉AOP是一种技术,就像SSH一样,有具体的实现步骤。然而,最近这几天再次细致的学习AO之后,才发现,它就是一种编程的思想。就像“面向对象”一样,在编程的过程中很多地方都可以体现,但是如果说AOP是怎么实现的,那就不确定了。因为在不同的框架里,它的实现方式也是不一样的。
    我先说说我自己对AOP的理解。在回顾了Spring中的AOP之后,我认为,AOP就像我们走路,当我们在路上行走的时候,因为饥饿,去路边的饭店吃饭,然后当我们吃饱喝足的时候,就又回到那条路上我们之前离开的那个地方。而对于我们的路途来说,中间的那次吃饭根本没有什么影响,我们唯一的收获就是不饿了。
    就像上面的例子一样,我们在编程过程中的AOP也是如此,当我们在完成某一个功能的时候,我们需要在原本的功能逻辑的基础上加上一个记录日志的功能。因为这个日志的功能不仅仅是某一个模块中使用,而是大部分的功能中都会添加,所以假如我们在每个模块中都注入该功能那么将会十分的繁琐,而且不易于维护。然而,加入我们利用AOP的思想,在所有需要添加日志的功能中找到一个切入点,在该切入点内我们加入日志,然后在日志处理完成后再回到这个切入点,这样原本的功能没有任何影响,只是消耗了一些时间来处理其他的事情。以后如果将日志的方式改变了,我们只需要改变一处就可以实现所有需要记录日志的地方都改变记录日志的方式了。
springAOP的实现方式(一)
    (一)环境搭建
    1.创建java项目
    2.引入spring相关jar包
    3.引入aspectJ相关jar包
  (二)代码实现

    1.切入类

@Aspect
public class SecurityHandler {
	
	
	/**
	 * 定义Pointcut,Pointcut的名称为addAddMethod(),此方法没有返回值和参数
	 * 该方法就是一个标识,不进行调用
	 */
	@Pointcut("execution(* add*(..))")
	private void addAddMethod(){};
	
	
	/**
	 * 定义Advice,表示我们的Advice应用到哪些Pointcut订阅的Joinpoint上
	 */
	@Before("addAddMethod()")
	//@After("addAddMethod()")
	private void checkSecurity() {
		System.out.println("-------记录日志,或者检查安全性-------");
	}		
}
2.切入点类
<span style="font-size:24px;">public class UserManagerImpl implements UserManager {
	public void addUser(String username, String password) {
		//checkSecurity();
		System.out.println("---------UserManagerImpl.add()--------");
	}
	public void delUser(int userId) {
		//checkSecurity();
		System.out.println("---------UserManagerImpl.delUser()--------");
	}
	public String findUserById(int userId) {
		//checkSecurity();
		System.out.println("---------UserManagerImpl.findUserById()--------");
		return "张三";
	}
	public void modifyUser(int userId, String username, String password) {
		//checkSecurity();
		System.out.println("---------UserManagerImpl.modifyUser()--------");
	}

}</span>


3.配置文件
<span style="font-size:24px;"><?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对Annotation的支持 -->       
	<aop:aspectj-autoproxy/>           
	
	<bean id="userManager" class="com.lcy.spring.UserManagerImpl"/>
	
	<bean id="securityHandler" class="com.lcy.spring.SecurityHandler"/> 
</beans></span>
4.测试方法:
<span style="font-size:24px;">import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Client {
	public static void main(String[] args) {
		BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
		UserManagerImpl userManager = (UserManagerImpl)factory.getBean("userManager");
		userManager.addUser("张三", "123");
	}
}</span>



版权声明:本文为博主原创文章,未经博主允许不得转载。

spring AOP 之 注解 配置实现(附 Java 代码实例)

导入类扫描的注解解析器 命名空间:xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=...
  • qq_27093465
  • qq_27093465
  • 2016年11月28日 18:16
  • 1791

使用Spring的注解方式实现AOP入门

首先在Eclipse中新建一个普通的Java Project,名称为springAOP。为了使用Spring的注解方式进行面向切面编程,需要在springAOP项目中加入与AOP相关的jar包,spr...
  • yerenyuan_pku
  • yerenyuan_pku
  • 2016年10月20日 00:28
  • 4089

Spring AOP 自定义注解的实现

spring 自定义注解
  • changliangwl
  • changliangwl
  • 2016年05月25日 14:53
  • 2890

spring AOP + 自定义注解实现权限控制小例子

今天看了一下黑马程序员的视频,上面讲到一个使用spring AOP + 自定义注解的方式来实现权限控制的一个小例子,个人觉得还是可以借鉴,整理出来与大家分享。需求:service层有一些方法,这些方法...
  • Minhellic
  • Minhellic
  • 2016年07月15日 17:29
  • 8772

使用Spring的注解方式实现AOP的细节

前面我们已经入门使用Spring的注解方式实现AOP了,现在我们再来学习使用Spring的注解方式实现AOP的一些细节。本文是建立在使用Spring的注解方式实现AOP入门的案例的基础之上的。 本文...
  • yerenyuan_pku
  • yerenyuan_pku
  • 2016年10月21日 09:01
  • 2334

Spring AOP编程(注解实现)

一、基本概述Aop(aspect object programming) 面向切面编程 功能: 让关注点代码与业务代码分离!关注点 重复代码就叫做关注点;切面 关注点形成的类,...
  • scgaliguodong123_
  • scgaliguodong123_
  • 2015年11月11日 11:13
  • 1052

Spring AOP 自定义注解的实现

原文: http://www.cnblogs.com/shipengzhi/articles/2716004.html 二、Spring AOP 自定义注解的实现 在Maven中加入以...
  • liuzhen917
  • liuzhen917
  • 2016年02月02日 10:27
  • 2926

Spring AOP+自定义注解实现缓存

Spring AOP+自定义注解实现缓存
  • thjnemo
  • thjnemo
  • 2015年04月07日 14:00
  • 2647

通过SpringAOP+注解实现自动代理

最近在做一个数据对接项目,通过Hessian与其他企业对接数据。但是公司电脑不能上网只能通过代理上网。如果每个方法都写代理的代码太繁琐,而且项目发布到服务器上的时候服务器是可以上网的。即便通过配置文件...
  • jaune161
  • jaune161
  • 2015年03月11日 14:41
  • 4903

spring AOP自定义注解方式实现日志管理

今天继续实现AOP,到这里我个人认为是最灵活,可扩展的方式了,就拿日志管理来说,用Spring AOP 自定义注解形式实现日志管理。废话不多说,直接开始!!! 关于配置我还是的再说一遍。 ...
  • huangkai2012
  • huangkai2012
  • 2015年11月26日 11:59
  • 1659
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring中AOP——注解实现
举报原因:
原因补充:

(最多只允许输入30个字)