初識輕量級Java開源框架 --- Spring


初識輕量級Java開源框架 --- Spring

作者:egg

微博:http://weibo.com/xtfggef

出處:http://blog.csdn.net/zhangerqing

spring是一個輕量級Java框架,其核心思想就是DI(Dependency Injection,即依賴注入)和IoC(Inversion of Control,即控制反轉),因為其開源、低侵入性,現在已經席卷了很大一部分市場,其最大競爭對手乃是JavaEE框架EJB。EJB3.0以前,由於其笨重以及使用繁瑣,被人們無奈棄用,取而代之就是spring,但是spring也有它的局限性,就是spring對分布式的支持不好,但是EJB在這方面很有優勢,而且當前EJB3.0簡化了操作,使用不再繁瑣,競爭力進一步提升。所以,當前輕量級的JavaWeb項目,很多都是使用的spring,我們有必要把它學好!本章系Java之美[從菜鳥到高手演變]系列之spring框架初識,我希望大家和我一起,再次回顧下Spring的基礎知識,積極提出寶貴的意見和建議!本次學習使用的是Spring4.1 版本。

Modules

 

從這幅圖中我們可以看出來Spring的整體架構,主要分為六大模塊

Core Container

核心部分分為4大塊,spring-core, spring-beans, spring-context, spring-expression. 其中core和bean是整個框架的核心,提供了基礎的DI和IoC功能。 Context建立在core和beans模塊之上,提供一種類似JNDI且以框架的方式來操作對象的方式。Context模塊從beans模塊繼承它的功能同時增加了國際化支持,如資源綁定等,同時,Context模塊也支持JavaEE功能,如EJB,JMX和基本的遠程調用。ApplicationContext接口是context模塊的焦點。expression是一種很強大的expression language,支持在運行時查詢和操作對象的屬性,我們會在后面的文章中舉些例子來說明spring expression language的用法。

AOP and instrumentation

Aop模塊提供了面向切面編程的實現,和AspectJ集成。

Messaging

Messaging是spring4新增加的模塊,包含了一部分主要的基於message的應用的實現。

Data Access/Integration

Data access顧名思義,是spring對數據層提供的支持,是功能比較豐富的模塊。提供了包括JDBC,事物,ORM,JMS等一系列實現。

Web

Web模塊主要提供面向web的一些實現,例如多文件上傳,servlet監聽器以及spring mvc方面的支持。

Test

Test模塊主要是針對spring的各個模塊做各種各樣的測試,包括單元測試、集成測試等等。

 

關於各個模塊具體的解釋及作用我們會在后面的文章中一一提到,也請有興趣的讀者自行去查閱spring官方文檔,獲得更詳細的說明。

 

第一個Spring小程序

新建一個User類,一個UserDao類以及一個測試類:

User.java

 

[java]  view plain  copy
 
  1. package com.adam.java.spring.po;  
  2.   
  3. public class User {  
  4.     private String name;  
  5.     private int age;  
  6.     private int score;  
  7.     public String getName() {  
  8.         return name;  
  9.     }  
  10.     public void setName(String name) {  
  11.         this.name = name;  
  12.     }  
  13.     public int getAge() {  
  14.         return age;  
  15.     }  
  16.     public void setAge(int age) {  
  17.         this.age = age;  
  18.     }  
  19.     public int getScore() {  
  20.         return score;  
  21.     }  
  22.     public void setScore(int score) {  
  23.         this.score = score;  
  24.     }  
  25.       
  26.     public String toString(){  
  27.         return "tostring from user";  
  28.     }  
  29. }  

UserDao.java

[java]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. package com.adam.java.spring.dao;  
  2.   
  3. import com.adam.java.spring.po.User;  
  4.   
  5. public class UserDao {  
  6.     private User user;  
  7.       
  8.     public void add(){  
  9.         System.out.println("add from userdao");  
  10.         System.out.println(user.toString());  
  11.     }  
  12.   
  13.     public User getUser() {  
  14.         return user;  
  15.     }  
  16.   
  17.     public void setUser(User user) {  
  18.         this.user = user;  
  19.     }  
  20.   
  21.       
  22. }  

DITest.java

[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. package com.adam.java.spring;  
  2.   
  3. import org.springframework.context.ApplicationContext;  
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  5.   
  6. import com.adam.java.spring.dao.UserDao;  
  7.   
  8. public class DITest {  
  9.   
  10.     @SuppressWarnings("resource")  
  11.     public static void main(String[] args) {  
  12.         ApplicationContext atx = new ClassPathXmlApplicationContext("beans.xml");  
  13.         UserDao userDao = (UserDao) atx.getBean("userDao");  
  14.         userDao.add();  
  15.     }  
  16.   
  17. }  

一個配置文件beans.xml

 

 

[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">  
  5.   
  6. <bean id="user" class="com.adam.java.spring.po.User"/>  
  7. <bean id="userDao" class="com.adam.java.spring.dao.UserDao">  
  8.     <property name="user" ref="user"/>  
  9. </bean>  
  10. </beans>  


執行測試類,得出如下輸出:

 

 

[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
    1. add from userdao  
    2. tostring from user  
      1. // from: http://blog.csdn.net/zhangerqing/article/details/8546049


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM