Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16494711
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:42:17

下载本文示例代码
  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; }}  然后我们使用BeanWrapper来调用这两个bean: Company c = new Company();BeanWrapper bwComp = BeanWrapperImpl(c);// setting the company name...bwComp.setPropertyValue("name", "Some Company Inc.");// ... can also be done like this:PropertyValue v = new PropertyValue("name", "Some Company Inc.");bwComp.setPropertyValue(v);// ok, let's create the director and tie it to the company:Employee jim = new Employee();BeanWrapper bwJim = BeanWrapperImpl(jim);bwJim.setPropertyValue("name", "Jim Stravinsky"); bwComp.setPropertyValue("managingDirector", jim);// retrieving the salary of the managingDirector through the companyFloat salary = (Float)bwComp.getPropertyValue("managingDirector.salary");  看起来麻烦了许多,但是这样spring就可以使用统一的方式来管理bean的属性了。共2页。 1 2 :   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; }}  然后我们使用BeanWrapper来调用这两个bean: Company c = new Company();BeanWrapper bwComp = BeanWrapperImpl(c);// setting the company name...bwComp.setPropertyValue("name", "Some Company Inc.");// ... can also be done like this:PropertyValue v = new PropertyValue("name", "Some Company Inc.");bwComp.setPropertyValue(v);// ok, let's create the director and tie it to the company:Employee jim = new Employee();BeanWrapper bwJim = BeanWrapperImpl(jim);bwJim.setPropertyValue("name", "Jim Stravinsky"); bwComp.setPropertyValue("managingDirector", jim);// retrieving the salary of the managingDirector through the companyFloat salary = (Float)bwComp.getPropertyValue("managingDirector.salary");  看起来麻烦了许多,但是这样spring就可以使用统一的方式来管理bean的属性了。共2页。 1 2 : 下载本文示例代码


品味Spring 的魅力品味Spring 的魅力品味Spring 的魅力品味Spring 的魅力品味Spring 的魅力品味Spring 的魅力品味Spring 的魅力品味Spring 的魅力品味Spring 的魅力品味Spring 的魅力品味Spring 的魅力品味Spring 的魅力品味Spring 的魅力品味Spring 的魅力品味Spring 的魅力
阅读(100) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~