spring的AOP是基于代理的。java的事务控制是基于代理的。这两句话熟悉吧,一些老鸟就喜欢用这些词汇让我们犯晕,让我们感到他们很专业。这里我们将打破这个神话,本篇先介绍基于代理的AOP。这里我们先展示下什么叫做代理,先从静态代理开始。
一个静态代理的例子。
1、定义一个接口
AOP之静态代理
package com.itcast.aop;
//要实现的接口
public interface IHello {
public void hello(String name) throws Exception;
public void helloAaa(String name);
public void helloBbb(String name);
}
2、一个实现接口的实例
package com.itcast.aop;
//实现方法1
public class HelloSpeaker implements IHello{
// private Logger logger = Logger.getLogger(this.getClass().getName());
public void hello(String name) throws Exception{
System.out.println("Hello "+ name);
}
public void helloAaa(String name) {
System.out.println("Hello in aaa "+ name);
}
public void helloBbb(String name) {
System.out.println("Hello in bbb "+ name);
}
}
3、调用的静态代理类
package com.itcast.aop;
import java.util.Date;
import java.util.logging.Logger;
//静态代理类
public class HelloProxy implements IHello {
private Logger logger = Logger.getLogger(this.getClass().getName());
private IHello helloObj;
public HelloProxy(IHello helloObj){
this.helloObj=helloObj;
}
public void hello(String name) {
logger.info("method start at "+new Date());
try {
helloObj.hello(name);
} catch (Exception e) {
e.printStackTrace();
}
logger.info("method end at "+new Date());
}
public void helloAaa(String name) {
System.out.println("Hello in aaa"+ name);
}
public void helloBbb(String name) {
System.out.println("Hello in bbb"+ name);
}
//静态代理类的测试方法
public static void main(String[] args){
IHello proxy = new HelloProxy(new HelloSpeaker());
try {
proxy.hello("tester");
} catch (Exception e) {
e.printStackTrace();
}
}
}
上边就是我们的静态代理类,代理了我们IHello接口的实现类,并加上了自己的日志输出,在IHello的实现类的hello方法每次被调用的时候,都会被在其前后加上日志。
结果如下:
信息: method start at Sun Mar 15 10:57:31 CST 2009
2009-3-15 10:57:32 com.itcast.aop.HelloProxy hello
信息: method end at Sun Mar 15 10:57:32 CST 2009
以上就是静态代理,原理很简单,目的也很简单,就是调用接口实现类的某个方法之前或者之后调用另外的操作。
总结下开发步骤:
1、创建一个接口
2、创建一个接口的实现类
3、创建一个代理类,这个代理类也实现了上边的接口,但是将 要被代理的实现类传入到代理类中,在代理类的接口实现方法中调用,并在调用前后加上一些操作(上边的就是日志操作而已)
分享到:
相关推荐
Getting started with Spring Framework (4th Edition) is a hands-on guide to begin developing applications using Spring Framework 5. The examples (consisting of 88 sample projects) that accompany this ...
SpringFramework5 包含响应流(定义响应性API的语言中立尝试)和 Reactor(由Spring Pivotal团队提供的 Reactive Stream 的Java实现), 以用于其自身的用途以及其许多核心API。 Spring Web Reactive 在 spring-...
8. **WebSocket支持**:Spring Framework 5引入了对WebSocket协议的支持,提供了与服务器进行全双工通信的能力,适用于实时应用。 9. **反应式编程**:Spring 5引入了对Reactive Streams的支持,通过Project ...
Spring Framework 5.1.0源码 The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform. A key ...
《Spring Framework 5课程项目详解》 Spring Framework 5是Java开发领域中备受推崇的框架,它为构建高质量的企业级应用程序提供了强大的支持。本项目基于Spring Framework 5,旨在通过实际操作来深入理解和掌握该...
Spring Framework。 官网 Spring Framework API。 Spring Framework 开发文档。
5. 验证、数据绑定和类型转换 6. Spring表达式语言 9. Spring框架下的测试 10. 单元测试 11. 集成测试 14. DAO支持 15.使用JDBC实现数据访问 16. ORM和数据访问 17. 使用 O/X(Object/XML)映射器对XML进行编组 19. ...
标题中的“maven仓库中org下的springframework”指的是在Maven的本地或远程仓库中,位于`org`组织下的`springframework`项目。Spring Framework是Java开发中的一个核心框架,由Pivotal Software公司维护,它为构建...
"Spring Framework 4 参考文档中文版" 以下是 Spring Framework 4 参考文档中文版的知识点总结: 一、Spring Framework 概览 * Spring Framework 是一个轻量级的解决方案,是一站式构建企业级应用的一种选择。 * ...
5. **排序与比较**:`org.springframework.core.order`和`org.springframework.core.type`包提供了排序算法和类型比较机制,对于Spring容器中bean的排序和类型检查起到了关键作用。 6. **事件驱动**:`org.spring...
spring framework 中文参考手册
《Spring Framework 5:Guru存储库的初学者》 Spring Framework 5 是Java开发领域中最流行的开源框架之一,尤其在构建企业级应用时扮演着核心角色。它为开发者提供了全面的基础设施支持,包括依赖注入(DI)、面向...
Spring Framework 是一个广泛使用的开源Java应用框架,特别适用于企业级应用程序开发。它的最新版本v6.1.4为我们带来了许多新特性和改进,使得开发者能够更高效、更灵活地构建可维护的、高性能的应用程序。这个...
Spring Framework API文档。Spring是什么呢?首先它是一个开源的项目,而且非常活跃;它是一个基于IOC和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据...
org.springframework.flex-1.0.3.RELEASE.jar.zip用于JAR包,org.springframework.flex-1.0.3.RELEASE.jar.zip用于JAR包org.springframework.flex-1.0.3.RELEASE.jar.zip用于JAR包org.springframework.flex-1.0.3....
org.springframework.aop-3.0.4.RELEASE.jar org.springframework.asm-3.0.4.RELEASE.jar org.springframework.aspects-3.0.4.RELEASE.jar org.springframework.beans-3.0.4.RELEASE.jar org.springframework....
8. **WebSocket支持**:Spring Framework 5增加了对WebSocket协议的支持,使得实时通信变得更加便捷。 9. **Reactive编程**:Spring 5引入了Reactor,一个响应式编程库,支持非阻塞I/O,适用于高并发场景,适应现代...
- 新功能:Spring Framework 5.x引入了对Reactive编程模型的支持,通过Project Reactor提供了非阻塞I/O能力,适应微服务和云原生环境的需求。 总的来说,"spring-framework-5.3.6.RELEASE-dist.zip" 包含了开发基于...
### Spring Framework 简介 #### 一、Spring Framework 的独特之处 在众多J2EE框架中,Spring Framework 自2003年发布以来一直备受瞩目。与其他框架相比,Spring Framework 的独特之处在于: 1. **专注于管理业务...