Spring之AOP实现面向切面编程

近期在学Java的动态代理和Spring面向切面编程,越来越认为Spring设计的真的是太完美了。于是,想一个最简单的样例来跑一下。但问题多多,显示缺少,Aspectj里面的相应的类。导入Aspectj.jar呗。可是装Aspectj.jar跟一般的导入.jar不一样,还须要安装并改动Path变量,加入安装文件夹下的bin文件夹到PATH中,并将安装文件夹下lib文件夹里的.jar文件导入MyEclipse。然后,又出现了NoSuchMethodError: net.sf.cglib.proxy.Enhancer.setInterceptDuringConstruction(Z)V错误。于是又找cglib.jar包,导入.jar包,依旧是相同的错误。搜了搜。原来是应该导入cglib-nodep-2.1_3.jar而不是cglib2.jar,导入完毕,问题解决。bravo!

//AOPTest.java

package com.spring.aop;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class AOPTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ApplicationContext ctx=new ClassPathXmlApplicationContext("aop.xml");
		Consume consume=(Consume)ctx.getBean("consume");
		consume.consumeService();
	}

}

//Consume.java

package com.spring.aop;

public class Consume {
	public void consumeService()
	{
		System.out.println("The food is delicious!");
	}
}

//Service.java

package com.spring.aop;

public class Service {
	public void beforConsume()
	{
		System.out.println("Before consume!");
	}
	public void afterConsume()
	{
		System.out.println("After consume!");
	}
}

//配置文件

<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
	<bean name="service" class="com.spring.aop.Service"/>
	<bean name="consume" class="com.spring.aop.Consume"/>
	<aop:config>
		<aop:aspect ref="service">
			<aop:pointcut id="consumeService" expression="execution(* *.consumeService(..))" />
			<aop:before pointcut-ref="consumeService" method="beforConsume"/>
			<aop:after pointcut-ref="consumeService" method="afterConsume"/>
		</aop:aspect>
	</aop:config>
</beans>

//程序依赖包和结果

时间: 2024-10-18 16:47:12

Spring之AOP实现面向切面编程的相关文章

Spring框架——AOP(面向切面编程)详解

 1 AOP概述 ●AOP(Aspect-Oriented Programming,面向切面编程):是一种新的方法论,是对传统 OOP(Object-Oriented Programming,面向对象编程)的补充. ●AOP编程操作的主要对象是切面(aspect),而切面模块化横切关注点. ●在应用AOP编程时,仍然需要定义公共功能,但可以明确的定义这个功能应用在哪里,以什么方式应用,并且不必修改受影响的类.这样一来横切关注点就被模块化到特殊的类里--这样的类我们通常称之为"切面".

AOP (面向切面编程)

AOP (面向切面编程) 编辑 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. AOP在其他领域也有其他含义.[1] 中文名 面向切面编程 外文

面试题思考:解释一下什么叫AOP(面向切面编程)

这种在运行时,动态地将代码切入到类的指定方法.指定位置上的编程思想就是面向切面的编程. AOP是Spring提供的关键特性之一.AOP即面向切面编程,是OOP编程的有效补充. 使用AOP技术,可以将一些系统性相关的编程工作,独立提取出来,独立实现,然后通过切面切入进系统. 从而避免了在业务逻辑的代码中混入很多的系统相关的逻辑--比如权限管理,事物管理,日志记录等等. 这些系统性的编程工作都可以独立编码实现,然后通过AOP技术切入进系统即可.从而达到了 将不同的关注点分离出来的效果. 本文深入剖析

Spring AOP:面向切面编程,AspectJ,是基于spring 的xml文件的方法

导包等不在赘述: 建立一个接口:ArithmeticCalculator,没有实例化的方法: package com.atguigu.spring.aop.impl.panpan; public interface ArithmeticCalculator { //创建一个接口,其是抽象的类,不能实例化 int add(int i,int j); int sub(int i,int j); int mul(int i,int j); int div(int i,int j); } 建立一个类:A

Spring(三)--AOP【面向切面编程】、通知类型及使用、切入点表达式

1.概念:Aspect Oriented Programming 面向切面编程 在方法的前后添加方法 2.作用:本质上来说是一种简化代码的方式 继承机制 封装方法 动态代理 -- 3.情景举例 ①数学计算器接口[MathCalculator] int add(int i,int j); int sub(int i,int j); int mul(int i, int j); int div(int i,int j); 因为后面的通知方法需要返回值,所以在这里类型声明为 int 类型 public

Spring核心思想:IOC(控制反转)、DI(依赖注入)和AOP(面向切面编程)

Spring有三大核心思想,分别是控制反转(IOC,Inversion Of Controller),依赖注入(DI,Dependency Injection)和面向切面编程(AOP,Aspect Oriented Programming). 控制反转(IOC,Inversion Of Controller) 控制反转不是什么技术,而是一种设计思想.在Java开发中,IOC意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制. 传统正转 控制有反转,当然也就有原来的正转.正转就

什么叫AOP(面向切面编程)?

spring的AOP面向切面编程,实现在不改变代码的情况下完成对方法的增强.比较常用的就是spring的声明式事务管理,底层通过AOP实现,避免了我们每次都要手动开启事物,提交事务的重复性代码,使得开发逻辑更加清晰. 简单点解释,比方说你想在你的service层所有类中都加上一个打印'你好'的功能这你经可以用aop思想来做,你先写个类写个方法,方法经实现打印'你好'然后你Ioc这个类 ref="service.*"让每个类都注入. aop就是面向切面的编程.比如说你每做一次对数据库操作

AOP(面向切面编程概念,本文为翻译)

AOP是什么 AOP为Aspect Oriented Programming的缩写.AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. 详情请自行百度或者Google: AOP In  .Net 的应用   AOP的应用场景 AOP的最大优势是,你只需要担心方面在一个地方,编程一次和应用所需的所有地方.AOP有

简单理解AOP(面向切面编程)

AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. AOP与OOP是面向不同领域的两种设计思想. OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分. AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果. 我们可以单单从上面的字面上来理解AOP和OOP的话,用下面