`
cyz001
  • 浏览: 43869 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

spring recipes笔记 - 动态代理,aop概述

阅读更多
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笔记 - 使用动态代理模块化横切关注点
分享到:
评论

相关推荐

    Spring Recipes A Problem-Solution Approach.pdf

    2. **AOP增强**:Spring 2.5增强了对AOP的支持,提供了更加强大的切入点表达式语言,以及更多的代理类型选择,这使得开发者可以更加灵活地实现业务逻辑与横切关注点的分离。 3. **Web模块增强**:在Web模块方面,...

    Spring Recipes A Problem-Solution Approach.rar

    《Spring Recipes A Problem-Solution Approach》是一本专为专业IT人士编写的书籍,它深入浅出地探讨了Spring框架的各种应用场景和解决方案。Spring是Java领域中最受欢迎的轻量级应用程序框架,广泛应用于企业级开发...

    Spring Recipes: A Problem-Solution Approach, Second Edition

    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 Recipes

    获取Spring Boot 2微框架的可重用代码配方和代码段 了解Spring Boot 2如何与其他Spring API,工具和框架集成 访问Spring MVC和新的Spring Web Sockets,以实现更简单的Web开发 使用微服务进行Web服务开发并与Spring ...

    Spring Recipes A Problem-Solution Approach(english version pdf)

    《Spring Recipes: A Problem-Solution Approach》是一本专注于Spring框架的实用指南,旨在帮助开发者解决在实际项目中遇到的问题。本书以问题-解决方案的方式组织内容,使得读者能够快速找到并理解针对特定问题的...

    curator-recipes-2.6.0-API文档-中文版.zip

    赠送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).pdf

    Spring 5 Recipes A Problem-Solution Approach(4th).pdfSpring 5 Recipes A Problem-Solution Approach(4th).pdf

    SpringRecipes

    ### Spring Recipes:问题与解决方案的方法论 #### 书籍概述 《Spring Recipes》是一本专注于Spring框架的实用指南,由Gary Mak编写,Sam Brannen(SpringSource的技术评审员)和Kris Lander进行了技术审阅。该书...

    [Apress]-Spring-Recipes---A-Problem-Solution-Appr_Java编程_Others_

    SPRING RECIPES-A PROBLEM SOLUTION APPROACH

    Bernard -- Python Recipes Handbook -- 2016.pdf

    根据提供的文件信息,“Bernard -- Python Recipes Handbook -- 2016.pdf”这本书是由Joey Bernard编写的,采用问题解决方案的方式介绍了Python编程语言的各种应用场景和技术要点。本书于2016年出版,由Apress出版社...

    curator-recipes-4.3.0-API文档-中英对照版.zip

    赠送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; 包含翻译后...

    curator-recipes-2.6.0-API文档-中英对照版.zip

    赠送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 Recipes: A Problem-Solution Approach》是一本深入探讨Spring框架的权威指南,它采用问题-解决方案的结构,为读者提供了实用且详细的指导。这本书涵盖了Spring框架的核心组件以及企业级应用开发中的常见...

    Spring Recipes A Problem-Solution Approach [英文原版]

    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 ...

    Spring Boot 2 Recipes: A Problem-Solution Approach

    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 recipes2th

    《Spring Recipes A Problem-Solution Approach 2nd Edition》是Spring框架开发者的重要参考资料,它深入浅出地介绍了如何解决Spring框架在实际开发中遇到的各种问题。这本书的第二版更新了大量内容,以适应Spring...

Global site tag (gtag.js) - Google Analytics