国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

品味Spring 的魅力

2019-11-17 06:20:44
字體:
來源:轉載
供稿:網友

  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 company
Float salary = (Float)bwComp.getPropertyValue("managingDirector.salary");
  看起來麻煩了許多,但是這樣spring就可以使用統一的方式來治理bean的屬性了。 Bean的制造工廠

  有了對單個Bean的包裝,還需要對多個的bean進行治理。在spring中,把bean納入到一個核心庫中進行治理。bean的生產有兩種方法:一種是一個bean產生多個實例,一種是一個bean只產生一個實例。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 全州县| 灵山县| 上杭县| 布拖县| 民丰县| 轮台县| 河北区| 桃源县| 乐亭县| 监利县| 石家庄市| 台南市| 滕州市| 滦平县| 肥东县| 昌乐县| 来凤县| 温宿县| 河间市| 福海县| 石景山区| 叙永县| 武义县| 阳曲县| 达州市| 乾安县| 姚安县| 怀柔区| 沁源县| 永嘉县| 周口市| 遂宁市| 托克逊县| 工布江达县| 南安市| 庆城县| 日照市| 正定县| 衡南县| 东乌珠穆沁旗| 金坛市|