其实spring中的aop就是设计模式中的结构型模式中的代理模式还有反射,但是经过spring整合,发扬光大之后代理显得不是那么明显了,代码如下:
业务接口:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package cn.com.fyz.spring.aop;
/**
*
* @author RDGFT
*/
public interface IHello {
void syshello(String s);//模拟业务处理
}
实现类:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package cn.com.fyz.spring.aop;
/**
*
* @author RDGFT
*/
public class Helloimlp implements IHello{
@Override
public void syshello(String s) {
System.out.println("Hello " + s); //模拟业务处理
}
}
现在我们要为这个业务方法加上日志记录的业务,我们在不改变原代码的情况下,
我们会去怎么做呢?也许,你会去写一个类去实现IHello接口,并依赖Hello这个类.代码如下:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package cn.com.fyz.spring.aop;
/**
*
* @author RDGFT
*/
public class helloproxy implements IHello {
private IHello hello;
public helloproxy(IHello hello) {
this.hello = hello;
}
public void syshello(String s) {
System.out.println("处理业务之前的代码... ...比如验证身份");
this.hello.syshello(s);
System.out.println("处理业务之后的代码... ...比如资源释放");
}
}
测试:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package cn.com.fyz.spring.aop;
/**
*
* @author RDGFT
*/
public class test {
public static void main(String[] argv) {
IHello hello = new helloproxy(new Helloimlp());
hello.syshello("sadasd");
}
}
分享到:
相关推荐
在这个场景中,我们将使用Spring AOP来实现一个日志记录的功能,以追踪系统中各个方法的调用情况,包括访问时间以及传递的参数。下面将详细阐述如何实现这一目标。 首先,我们需要了解AOP的基本概念。AOP的核心是切...
在本项目中,我们将探讨如何通过配置文件实现Spring AOP,包括前置通知、后置通知以及拦截器的运用。 首先,我们需要理解Spring AOP的核心概念。切面(Aspect)是关注点的模块化,这些关注点定义了跨越多个对象的...
根据给定文件的信息来看,这段内容实际上与Spring-AOP源码实现并无直接关联,而是关于Hadoop的基础介绍及其生态系统中的几个重要组件。然而,既然任务要求是从这些信息中提炼相关知识点,我们将尝试从Hadoop的角度...
在Spring中,AOP主要通过两种动态代理技术实现:JDK动态代理和CGLIB动态代理。 首先,让我们详细了解一下JDK动态代理。JDK动态代理基于Java的接口实现,它适用于目标对象实现了至少一个接口的情况。在运行时,JDK...
"Spring AOP 框架实现的结构分析" 本文主要目标是从实现的角度来认识 SpringAOP 框架。首先,我们需要了解 AOP 的基本概念,包括关注点、核心关注点、横切关注点、方面、连接点、切入点、增强、引介、混入继承和织...
1. 注解驱动的AOP:这是最常用的实现方式,通过在方法上添加注解(如`@Before`, `@After`, `@Around`, `@AfterReturning`, `@AfterThrowing`)来定义通知,并使用`@Aspect`注解定义切面。 2. XML配置驱动的AOP:...
2. **Spring AOP实现** - **JDK动态代理**:当目标对象实现了至少一个接口时,Spring会使用Java的Proxy类创建一个代理对象,该代理对象在运行时动态生成,并在调用实际方法前/后插入通知代码。 - **CGLIB代理**:...
本篇文章将详细探讨Spring实现AOP的四种主要方法:基于代理的方式、基于AspectJ的注解方式、基于XML的AOP配置以及基于Java的AOP配置。 1. 基于代理的实现 Spring的AOP支持两种代理类型:JDK动态代理和CGLIB代理。...
在Spring1.2或之前的版本中,实现AOP的传统方式就是通过实现Spring的AOP API来定义Advice,并设置代理对象。Spring根据Adivce加入到业务流程的时机的不同,提供了四种不同的Advice:Before Advice、After Advice、...
本文将深入探讨如何结合Spring AOP与EhCache实现一个简单的缓存实例,以便优化Java应用的运行效率。 首先,让我们了解Spring AOP。Spring AOP是Spring框架的一部分,它允许我们在不修改业务代码的情况下,通过定义...
在这个简单的例子中,`Spring IOC AOP MVC 简单例子`可能是整个项目的整合示例,它将上述三个核心组件结合在一起,演示了如何在一个实际的Web应用中使用Spring。这个示例可能会包括一个简单的用户登录功能,展示如何...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它允许程序员在不修改源代码的情况下,通过在关键点(切点)插入拦截器(通知)来增强功能,实现横切关注点,如日志、事务管理等。XML配置是Spring AOP早期...
接下来,我们通过一个简单的Spring AOP示例来加深对上述概念的理解。假设我们需要在调用某个公共方法前记录日志,我们可以定义一个`BeforeAdvice`,并在目标方法上应用此通知。 ```java package com.example.aop; ...
下面将详细阐述Spring的IOC和AOP,以及如何在实际项目中实现和配置。 ### Spring IOC(Inversion of Control,控制反转) 控制反转是一种设计模式,它的核心思想是将对象的创建和管理交由容器负责,而不是由对象...
总结起来,Spring AOP注解版通过简单易懂的注解,使得面向切面编程变得更加直观和方便。它降低了横切关注点与业务逻辑之间的耦合度,提高了代码的可维护性和复用性。通过合理利用这些注解,开发者可以轻松地实现日志...
- **Spring AOP支持**:Spring支持多种AOP实现方式,包括AspectJ和自己的AOP实现。 - **配置方法**:Spring AOP可以通过XML配置文件、Java配置类以及注解等多种方式进行配置。 - **切入点(Pointcut)**:定义了通知将...
Spring源码最难问题:当Spring AOP遇上循环依赖 Spring源码中最难的问题之一是循环依赖问题,当Spring AOP遇上循环依赖时,该如何解决? Spring通过三级缓存机制解决循环依赖的问题。 在Spring中,bean的实例化...
5. **代理模式**:Spring AOP通过代理模式实现切面功能,有JDK动态代理和CGLIB代理两种方式,前者针对实现了接口的类,后者则用于未实现接口的类。 通过这个简单的案例,你应该对Spring AOP有了初步的理解。随着...
总结来说,这个Spring AOP注解方式的Demo展示了如何通过简单的注解定义切面、切点和通知,实现对业务逻辑的无侵入式增强。这种方式使得代码更简洁、可读性更强,同时也充分利用了Spring框架的优势。对于理解和实践...
本篇文章将详细探讨如何通过注解在Spring中实现AOP。 首先,我们需要理解AOP的基本概念。AOP的核心思想是将那些分散在各个业务逻辑中的共同行为,如日志记录、事务处理、性能监控等,抽取出来,形成独立的模块,...