Aop面向切面编程概述
Aop(aspect-Oriented Programming 面向切面编程),它是对传统的oop(Object-Oriented Programming) 的补充,在oop的世界,应用程序用过类和接口组织,这些编程元素非常适合实现核心业务的需求,但是对于横切关注点,则显得力不从心,aop为开发者提供了另一种组织应用程序结构的方式,不再是oop的类和接口,aop的主要编程元素是切面,横切关注点在企业应用程序是非常普遍的,典型例子包括日志,验证,缓存和事务管理。
非模块化的横切关注点所带来的问题
横切关注点是跨越应用程序多个模块的功能,这些类型的关注点通常很难通过传统面向对象方式进行模块化,下面从一个简单的例子看一下非模块化横切关注点带来的问题
public interface Compute {
public double add(double a, double b);
public double sub(double a, double b);
}
public class ComputeImpl implements Compute {
/* (non-Javadoc)
* @see com.netease.dao.Compute#add(double, double)
*/
public double add(double a,double b){
double result = a + b;
return result;
}
public double sub(double a,double b){
double result = a-b;
return result;
}
}
现在我们考虑为计算器增加log,在记录每个方法的开始和结果
public class ComputeImpl implements Compute {
private Log log = LogFactory.getLog(this.getClass());
/* (non-Javadoc)
* @see com.netease.dao.Compute#add(double, double)
*/
public double add(double a,double b){
log.info("the method add() start with");
double result = a + b;
log.info("the method add() end");
return result;
}
public double sub(double a,double b){
log.info("the method sub() start");
double result = a-b;
log.info("the method sub() end");
return result;
}
}
如上所见,这些非业务需求的加入后,原来的方法急剧膨胀,因为这些属于系统范围的需求需要跨越多个模块,所以为了将他们与核心业务进行分开,把它们成为横切关注点
非模块化的横切关注点将会导致两个问题
第一个问题是代码的混乱,可维护性和复用性很差,在核心业务中还需要兼顾多个关注点。
另一个问题是代码分散,如果验证需求发生改变,要需要修改多个分散的横切点。
综上所诉,计算器应该只关心核心计算逻辑,将日志关注点从其中分离出来
下一篇
spring recipes笔记 - 使用动态代理模块化横切关注点
分享到:
- 2009-10-26 00:05
- 浏览 979
- 评论(0)
- 论坛回复 / 浏览 (0 / 1227)
- 查看更多
相关推荐
2. **AOP增强**:Spring 2.5增强了对AOP的支持,提供了更加强大的切入点表达式语言,以及更多的代理类型选择,这使得开发者可以更加灵活地实现业务逻辑与横切关注点的分离。 3. **Web模块增强**:在Web模块方面,...
《Spring Recipes A Problem-Solution Approach》是一本专为专业IT人士编写的书籍,它深入浅出地探讨了Spring框架的各种应用场景和解决方案。Spring是Java领域中最受欢迎的轻量级应用程序框架,广泛应用于企业级开发...
Spring Recipes: A Problem-Solution Approach, Second Edition With over 3 Million users/developers, Spring Framework is the leading “out of the box” Java framework. Spring addresses and offers simple...
获取Spring Boot 2微框架的可重用代码配方和代码段 了解Spring Boot 2如何与其他Spring API,工具和框架集成 访问Spring MVC和新的Spring Web Sockets,以实现更简单的Web开发 使用微服务进行Web服务开发并与Spring ...
《Spring Recipes: A Problem-Solution Approach》是一本专注于Spring框架的实用指南,旨在帮助开发者解决在实际项目中遇到的问题。本书以问题-解决方案的方式组织内容,使得读者能够快速找到并理解针对特定问题的...
赠送jar包:curator-recipes-2.6.0.jar; 赠送原API文档:curator-recipes-2.6.0-javadoc.jar; 赠送源代码:curator-recipes-2.6.0-sources.jar; 赠送Maven依赖信息文件:curator-recipes-2.6.0.pom; 包含翻译后...
Spring 5 Recipes A Problem-Solution Approach(4th).pdfSpring 5 Recipes A Problem-Solution Approach(4th).pdf
### Spring Recipes:问题与解决方案的方法论 #### 书籍概述 《Spring Recipes》是一本专注于Spring框架的实用指南,由Gary Mak编写,Sam Brannen(SpringSource的技术评审员)和Kris Lander进行了技术审阅。该书...
SPRING RECIPES-A PROBLEM SOLUTION APPROACH
根据提供的文件信息,“Bernard -- Python Recipes Handbook -- 2016.pdf”这本书是由Joey Bernard编写的,采用问题解决方案的方式介绍了Python编程语言的各种应用场景和技术要点。本书于2016年出版,由Apress出版社...
赠送jar包:curator-recipes-4.3.0.jar; 赠送原API文档:curator-recipes-4.3.0-javadoc.jar; 赠送源代码:curator-recipes-4.3.0-sources.jar; 赠送Maven依赖信息文件:curator-recipes-4.3.0.pom; 包含翻译后...
赠送jar包:curator-recipes-2.6.0.jar; 赠送原API文档:curator-recipes-2.6.0-javadoc.jar; 赠送源代码:curator-recipes-2.6.0-sources.jar; 赠送Maven依赖信息文件:curator-recipes-2.6.0.pom; 包含翻译后...
《Spring Recipes: A Problem-Solution Approach》是一本深入探讨Spring框架的权威指南,它采用问题-解决方案的结构,为读者提供了实用且详细的指导。这本书涵盖了Spring框架的核心组件以及企业级应用开发中的常见...
One of the first (if not the first) books on the latest Spring 3.x, and the first Spring code Recipes book focused on Spring Web-tier development The Spring framework is growing. It has always been ...
Using a problem-solution approach, Spring Boot 2 Recipes quickly introduces you to Pivotal's Spring Boot 2 micro-framework, then dives into code snippets on how to apply and integrate Spring Boot 2 ...
《Spring Recipes A Problem-Solution Approach 2nd Edition》是Spring框架开发者的重要参考资料,它深入浅出地介绍了如何解决Spring框架在实际开发中遇到的各种问题。这本书的第二版更新了大量内容,以适应Spring...