品味Spring的魅力

Spring的哲学是在不影响Java对象的设计的情况下将Java对象加入到框架中。

EJB的框架采用了一种侵略性(Invasive)的方法来设计对象,它要求你在设计中加入符合EJB规范的代码。一些轻量级的COP框架,例如Avalon,也要求对象设计时必须符合某种规范,例如Serviceable接口,这种做法是典型的Type 1做法。

这种设计思路要求Spring采用一种动态的、灵活的方式来设计框架。所以spring大量采用了反射。首先spring要解决的一个问题就是如何管理bean。因为IOC的思想要求bean之间不能够直接调用,而应该采用一种被动的方式进行协作。所以bean的管理是spring中的核心部分。

反射和内省在代码的层次上思考问题,有时候能够带来出人意料的灵活性。但它的使用有时候也是一个哲学问题,不论是在ORM设计还是在AOP设计上都出现了类似的问题-究竟是使用反射,还是使用代码生成。

在Spring中,处理这个问题的核心是在org.springframework.beans包中。而其中最为核心的部分,则是BeanWrapper。BeanWrapper,顾名思义,就是bean的包装器。所以,它的主要工作,就是对任何一个bean,进行属性(包括内嵌属性)的设置和方法的调用。在BeanWrapper的默认实现类BeanWrapperImpl中,虽然代码较长,但完成的工作却是非常的集中的。

BeanWrapper的深入研究

我们看看这个BeanWrapper是如何发挥运作的,假设我们有两个bean:

public class Company {
  private String name;
  private Employee managingDirector;
   public String getName() {
   return this.name;
  }
  public void setName(String name) {
   this.name = name;
  }
  public Employee getManagingDirector() {
   return this.managingDirector;
  }
  public void setManagingDirector(Employee managingDirector) {
   this.managingDirector = managingDirector;
  }
}
   public class Employee {
  private float salary;
   public float getSalary() {
   return salary;
  }
  public void setSalary(float salary) {
   this.salary = salary;
  }
}

时间: 2024-10-26 10:15:32

品味Spring的魅力的相关文章

品味Spring 的魅力_JSP编程

Spring的哲学是在不影响Java对象的设计的情况下将Java对象加入到框架中. EJB的框架采用了一种侵略性(Invasive)的方法来设计对象,它要求你在设计中加入符合EJB规范的代码.一些轻量级的COP框架,例如Avalon,也要求对象设计时必须符合某种规范,例如Serviceable接口,这种做法是典型的Type 1做法. 这种设计思路要求Spring采用一种动态的.灵活的方式来设计框架.所以spring大量采用了反射.首先spring要解决的一个问题就是如何管理bean.因为IOC的

品味Spring 的魅力

Spring Spring的哲学是在不影响Java对象的设计的情况下将Java对象加入到框架中. EJB的框架采用了一种侵略性(Invasive)的方法来设计对象,它要求你在设计中加入符合EJB规范的代码.一些轻量级的COP框架,例如Avalon,也要求对象设计时必须符合某种规范,例如Serviceable接口,这种做法是典型的Type 1做法. 这种设计思路要求Spring采用一种动态的.灵活的方式来设计框架.所以spring大量采用了反射.首先spring要解决的一个问题就是如何管理bean

百万自媒体大V的数据分析师成长线路,薪水过万难吗?

"他们需要从数据中找到有用的真相,然后解释给领导者." – Rchard Snee Emc 今天这个标题有点大,内容可能涉及的比较多,但也是数据君多年来一直想写的,却一直不敢写的.微博玩了7年,已有近120万的粉丝,微信玩了4年多,也有20万+粉丝了,许多人都知道这个账号,但从来不知道运营这个账号的是一个团队还是一个人? 我的数据分析师经历 第一阶段:与数据的接触 大学时代我的专业是统计学,一个二流本科里面的王牌专业,但是毕业后(2006年)发现很难找到对口的专业,于是选择了北上,在北

品味Java子类型多态的魅力

摘要: Java程序员经常运用对象的多态性使其在适当的地方调用适当的方法,显得很神奇.这种方法通过继承机制来实现.然而,一个严谨的实验可以使其变得很明白,并揭示了,把多态性理解为与类型相关的概念更为合适,比继承机制的解释更好.这种理解可以帮助程序员更好的运用多态. ------WM.保罗 罗格斯 "polymorphism(多态)"一词来自希腊语,意为"多种形式".多数Java程序员把多态看作对象的一种能力,使其能调用正确的方法版本.尽管如此,这种面向实现的观点导致

EJB3和Spring技术体系比较

随着EJB3规范以及支持EJB3的Java EE应用服务器的即将发布,全新Java EE体系架构的新 战争将拉开帷幕,在过去3年中如火如荼的Spring占据了Java EE应用开发基础平台的大半江 山,面对EJB3和Spring你应该如何选择呢? 作为一个架构师,我对EJB是既爱且恨,对Spring又恨又爱,现在我们来也把这两大技术 体系来做一个全面分析和对比,希望能给大家在进行技术选型时一个更好的参考. 1. 法制 VS "民主" EJB规范一直由国际组织JCP来制定,一经通过,即作

Spring.net(一)----Spring.NET框架简介及模块说明

Spring Framework天生丽质,因为其先进的架构和对一系列前沿开发思想的集成,使它从一产生就深得开发者欢迎,它将设计模式运用到了炉火纯青的地方,它的幽雅和魅力征服了许多JAVA开发者,使这些开发者成为了它的信徒,得程序员心者得天下,Spring引领了J2EE开发的潮流,同时Spring和各种框架的强强联手也为它的信徒的尽早飞翔插上了翅膀,比如老大哥SSH(配置烦琐的struts和Hibernate.Spring的集成).后起之秀EJSA(身材轻便使用灵活及零配置的EASYJWEB+JP

[转]注释驱动的 Spring cache 缓存介绍

原文:http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-cache/ 概述 Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 OSCache),而是一个对缓存使用的抽象,通过在既有代码中添加少量它定义的各种 annotation,即能够达到缓存方法的返回对象的效果. Spring 的缓存技术还具备相当的灵活性,不仅能

用Spring Boot颠覆Java应用开发

Java开发概述: 使用Java做Web应用开发已经有近20年的历史了,从最初的Servlet1.0一步步演化到现在如此多的框架,库以及整个生态系统.经过这么长时间的发展,Java作为一个成熟的语言,也演化出了非常成熟的生态系统,这也是许多公司采用Java作为主流的语言进行服务器端开发的原因,也是为什么Java一直保持着非常活跃的用户群.然而这个生态系统纷繁复杂,一个非常简单的Java Web应用程序都有可能应用到以下技术: Java开发分为两个阵营,一个是由Oracle 为代表的Java EE

[转] EJB 3和Spring技术体系比较

最近在学习EJB 3,对于SSH与EJB3,一直不太明白"即生瑜,何生亮?",今天无意看到一篇旧文,比较系统的对比了这二种技术架构,转载于此: 原文出处:http://www.51cto.com/specbook/223/46090.htm ------------------------------------------------------------------- 作为一个架构师,我对EJB是既爱且恨,对Spring又恨又爱,现在我们来也把这两大技术体系来做一个全面分析和对比