spring4.0 源碼分析 搭建簡單的分析環境(一)

版權聲明:本文爲博主原創文章,未經博主容許不得轉載。html

1、軟件版本java

        spring-framework-4.0.7.RELEASE-distspring

        jdk1.7.0.79(本人本身使用的)框架

        myeclipse9.1(本人本身使用的)eclipse

2、搭建測試工程測試

       打開eclipse,新建Java工程 SpringSource,創建目錄結構。導入spring的jar包,分別爲CORE包和Beans包,固然還有一個Log的依賴包。this

               spring-core-4.0.7.RELEASE.jarspa

               spring-beans-4.0.7.RELEASE.jar.net

               commons-logging-1.1.3.jarxml

       編寫測試用例

       一、 新建spring-beans.xml文件

  

[html]   copy
 <?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
        http://www.springframework.org/schema/beans/spring-beans.xsd">  
          
    <bean id="springTestBean" class="bean.SpringTestBean"/>  
</beans>
 

       二、 新建SpringTestBean.java文件

[java]   copy
  1. package bean;  
  2.   
  3. public class SpringTestBean {  
  4.   
  5.     private String testStr = "testStr";  
  6.   
  7.     public String getTestStr() {  
  8.         return testStr;  
  9.     }  
  10.   
  11.     public void setTestStr(String testStr) {  
  12.         this.testStr = testStr;  
  13.     }  
  14.       
  15. }  

       三、新建BeanFactoryTest.java文件

[java]   copy
  1. package bean;  
  2.   
  3. import org.springframework.beans.factory.BeanFactory;  
  4. import org.springframework.beans.factory.support.DefaultListableBeanFactory;  
  5. import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;  
  6. import org.springframework.beans.factory.xml.XmlBeanFactory;  
  7. import org.springframework.core.io.ClassPathResource;  
  8.   
  9. public class BeanFactoryTest {  
  10.   
  11. public static void main(String[] args) {  
  12.     /* 
  13.     ClassPathResource classPathResource = new ClassPathResource("spring-beans.xml"); 
  14.     DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); 
  15.     XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory); 
  16.     reader.loadBeanDefinitions(classPathResource); 
  17.     SpringTestBean springTestBean = (SpringTestBean)factory.getBean("springTestBean"); 
  18.     System.out.println(springTestBean.getTestStr()); 
  19.     */  
  20.       
  21.     BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-beans.xml"));  
  22.     SpringTestBean bean = (SpringTestBean)beanFactory.getBean("springTestBean");  
  23.     System.out.println(bean.getTestStr());  
  24.       
  25. }  
  26. }  

        到如今爲止,框架已經搭建好了。要是沒有問題的話,運行BeanFactoryTest.java這個類的main方法就能夠得出結果。

       在企業級的應用中通常會用ApplicationContext。在這裏使用了BeanFactory這個接口,固然在spring4.0中,官方也不建議只用XmlBeanFactory這個類了。因此在註釋中我用了另外一個方式取代了XmlBeanFactory這個類,可是爲了和spring3.2以前的版本銜接上,因此仍是用XmlBeanFactory來講明一下。下面咱們來分析下上面的測試程序做了什麼工做:

       一、 首先是程序讀取xml配置文件spring-beans.xml

       二、 根據spring-beans.xml中的配置找到對應的類的配置(也就是xml文件中配置的bean),而且實例化

       三、 調用第二步被實例化的對象的方法。

       這個貌似很簡單的過程,spring做了哪些工做,做爲一個風靡java程序界的優秀源碼真的就是這麼簡單嗎?

       經過這個簡單的測試工程,應該大體瞭解了beans工程的結構,下一次進入註釋掉的代碼的瞭解中,也就是spring的兩個核心的類DefaultListableBeanFactory和XmlBeanDefinitionReader。
 

       二、 新建SpringTestBean.java文件

[java]  view plain copy
  1. package bean;  
  2.   
  3. public class SpringTestBean {  
  4.   
  5.     private String testStr = "testStr";  
  6.   
  7.     public String getTestStr() {  
  8.         return testStr;  
  9.     }  
  10.   
  11.     public void setTestStr(String testStr) {  
  12.         this.testStr = testStr;  
  13.     }  
  14.       
  15. }  

       三、新建BeanFactoryTest.java文件

[java]  view plain copy
  1. package bean;  
  2.   
  3. import org.springframework.beans.factory.BeanFactory;  
  4. import org.springframework.beans.factory.support.DefaultListableBeanFactory;  
  5. import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;  
  6. import org.springframework.beans.factory.xml.XmlBeanFactory;  
  7. import org.springframework.core.io.ClassPathResource;  
  8.   
  9. public class BeanFactoryTest {  
  10.   
  11. public static void main(String[] args) {  
  12.     /* 
  13.     ClassPathResource classPathResource = new ClassPathResource("spring-beans.xml"); 
  14.     DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); 
  15.     XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory); 
  16.     reader.loadBeanDefinitions(classPathResource); 
  17.     SpringTestBean springTestBean = (SpringTestBean)factory.getBean("springTestBean"); 
  18.     System.out.println(springTestBean.getTestStr()); 
  19.     */  
  20.       
  21.     BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-beans.xml"));  
  22.     SpringTestBean bean = (SpringTestBean)beanFactory.getBean("springTestBean");  
  23.     System.out.println(bean.getTestStr());  
  24.       
  25. }  
  26. }  

        到如今爲止,框架已經搭建好了。要是沒有問題的話,運行BeanFactoryTest.java這個類的main方法就能夠得出結果。

       在企業級的應用中通常會用ApplicationContext。在這裏使用了BeanFactory這個接口,固然在spring4.0中,官方也不建議只用XmlBeanFactory這個類了。因此在註釋中我用了另外一個方式取代了XmlBeanFactory這個類,可是爲了和spring3.2以前的版本銜接上,因此仍是用XmlBeanFactory來講明一下。下面咱們來分析下上面的測試程序做了什麼工做:

       一、 首先是程序讀取xml配置文件spring-beans.xml

       二、 根據spring-beans.xml中的配置找到對應的類的配置(也就是xml文件中配置的bean),而且實例化

       三、 調用第二步被實例化的對象的方法。

       這個貌似很簡單的過程,spring做了哪些工做,做爲一個風靡java程序界的優秀源碼真的就是這麼簡單嗎?

       經過這個簡單的測試工程,應該大體瞭解了beans工程的結構,下一次進入註釋掉的代碼的瞭解中,也就是spring的兩個核心的類DefaultListableBeanFactory和XmlBeanDefinitionReader。

相關文章
相關標籤/搜索