【第2章 Spring快速入門】2.1 Java應用之HelloWorld

上一節:【第1章 Spring概述與結構】1.2 Spring模塊與結構java

注意:本系列教程不會經過工程單獨依賴某個Jar包,而是經過開源中國的Maven庫,來進行Jar包的依賴管理,因此後續的講解都是以Maven工程的方式,來搭建Spring Demo。git

說在前面,前面第1章內容已簡單介紹了Spring的起源,特色,模塊劃分以及結構說明,相信你們已對Spring有了總體性瞭解,經從本節開始,採用Spring的最新RELEASE版 spring-framework-4.1.6.RELEASE 來說解Spring模塊的使用以及源碼分析。廢話很少說,先簡單介紹下Spring4.0 GA發行版的內容變動,使你們對Spring4.0的內容較於以前的歷史版本有更清晰的認識。 ##Spring4.0 GA介紹## Spring4.0 GA版本支持了衆多Java 8的新特性, 新增了對WebSocket、STOMP等技術的支持,並加強了測試、Web開發的便利性,另外,在這個版本中還刪除了廢棄的方法和類。web

近十年來,Spring框架成爲企業級Java開發中佔據主導地位的編程模型,該框架最先發佈於2004年,其後發佈了幾個重大的版本更新:spring

  1. 在Spring 2.0中提供對XML命名空間和AspectJ的支持;
  2. 在Spring 2.5中新增了註解驅動的配置;
  3. 在Spring 3.0版本中引入了很強大的使用Java 5+的基礎功能以及基於Java的@Configuration模型;

Spring4.0 GA是最新的主版本,這個版本中包含了大量的新特性以應對Java語言和Java EE規範的發展。 Spring 4.0是首個徹底支持 Java 8 特性的框架,這個版本對環境的最低要求是Java SE 6。Spring 4.0連同其餘的Spring項目,將會應對並帶動下一個十年JVM的新趨勢,包括開發人員生產率(Developer Productivity)、大數據、雲、REST以及微服務架構(Micro Service Architecture)。編程

Spring框架4.0的總體架構以下圖所示: 輸入圖片說明瀏覽器

Spring 4.0的新特性包括: **對Java 8諸多特性的支持。**如今開發者能夠在Spring的回調接口中使用lambda表達式以及方法引用(method reference),對java.time(JSR-310)提供了很好的支持,一些註解也被更新爲@Repeatable。儘管Spring 4.0還支持Java SE6,可是官方仍是建議在使用Spring 4的新項目中,使用Java 7或8。服務器

**對Java EE 6和7的支持。**Spring在JCP中協助定義相關的規範,框架中對這些規範提供了很好的支持。Spring框架的4.0版本考慮到了JavaEE6以及更高的版本規範,尤爲是JPA 2.0和Servlet 3.0規範。爲了更具技術前瞻性,Spring 框架4.0還支持Java EE 7 中已可用的規範,包括JMS 2.0、JTA 1.二、JPA 2.一、Bean Validation 1.1以及JSR-236 Concurrency Utilities。另外, 對其餘開源庫的支持也提高到了最新版本,如Hibernate、Quartz、EhCache等。websocket

**對WebSocket、SockJS以及STOMP的支持。**Spring 4.0提供了一個名爲 spring-websocket的新模塊,以支持基於WebSocket的、客戶端-服務器的雙向通訊,它與JSR-356Java WebSocket API兼容。另外,還提供了基於SockJS(對WebSocket的模擬)的回調方案,以適應不支持WebSocket協議的瀏覽器。新增的 spring-messaging模塊提供了對STOMP的支持,以及用於路由和處理來自WebSocket客戶端的STOMP消息的註解編程模型。spring-messaging模塊中還包含了Spring Integration項目中的核心抽象類,如Message、MessageChannel、MessageHandler。架構

**對動態語言Groovy的支持。**應用能夠部分或徹底使用Groovy編寫。藉助於Spring 4.0,可以使用Groovy DSL定義外部的Bean配置,這相似於XML Bean聲明,可是語法更爲簡潔。使用Groovy還可以在啓動代碼中直接嵌入Bean的聲明。app

簡化Spring的學習過程。Spring.io網站上提供了全新的「Getting Started」指導和樣例幫助你學習Spring技術。基於Spring框架4.0構建的Spring Boot項目也能夠極大地簡化應用開發中相關配置的複雜性。

**對將來新架構的考量。**像Amazon、Google、Facebook這樣的行業的領導者,目前正在拋棄龐大的Java架構,而是更加傾向於微服務架構以及REST。針對這種趨勢,Spring 4.0中作了充分考慮,在Spring框架中REST是一等公民,在其餘組件如Spring Boot、Spring HATEOAS、Spring Security、Spring Social、Spring Data均是如此。藉助於Spring 框架4.0,開發人員可使用非阻塞的AsyncRestTemplate以及Java語言中的Futures等特性,構建出更加具備交互性、事件驅動的REST服務。Spring對HTML5/WebSocket RFC 6455/JSR-356的支持均有助於建立事件驅動的應用程序。

**Spring框架4.0刪除了全部廢棄的方法和類。**若是你想從一個以前的版本中升級到4.0的話,須要將全部對廢棄方法和類的引用進行更新。

當前我們使用的是最新版Spring Framework 4.1.6,此版本主要是個 bug 修復版本,強烈建議當前全部 4.x 用戶升級!Spring Framework 4.1.6 是第一個正式兼容當前 JDK 8 update 40 的版本 。Spring 4.1.x 支持更普遍,由 Oracle 和 IBM 提供的 Java runtimes 從 2010-era JDK 6 到最新的 2015-era JDK 8。以後,Spring Framework 4.2 將會測試早期 JDK 9 構建,努力支持不一樣的 JDK 版本。 ##Spring下載與說明## 訪問http://repo.spring.io/libs-release-local/org/springframework站點,下載Spring的最新穩定版本。目前最新版本爲spring-framework-4.1.6.RELEASE-dist.zip。解壓縮下載到的壓縮包,解壓縮後的文件夾應用以下幾個文件夾。

輸入圖片說明

**docs:**該文件夾下包含spring的相關文檔、開發指南及API參考文檔。 **libs:**該文件夾下包含spring各模塊的jar包,須要到哪一個模塊,直接依賴相關模塊jar包。Spring各模塊jar包說明以下圖: 輸入圖片說明 輸入圖片說明 輸入圖片說明

若是咱們在使用Spring某個模塊時,必需要依賴模塊所需的其餘Spring模塊或者外部JAR包,Spring模塊JAR包依賴關係以下圖: 輸入圖片說明 **schema:**該文件下包含spring XML配置文件所依賴的schema文件。 輸入圖片說明

##HelloWorld之搭建## ###POM文件配置### 根據上面的JAR包依賴關係,Spring Java Project 工程至少須要依賴如下幾個JAR文件:

<dependencies>
    <!-- 1. Spring 至少依賴包 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
    </dependency>
    <!-- END -->
</dependencies>

###定義Bean###

package com.king.helloworld.bean;

/**
 * @author taomk
 * @version 1.0
 * @since 15-7-7 下午4:06
 */
public class HelloWorld {

    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public void hello() {
        System.out.println("Hello, " + name);
    }
}

###配置ApplicationContext.xml###

<?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="helloWorld" class="com.king.helloworld.bean.HelloWorld">
        <property name="name" value="Tao Bangren"/>
    </bean>
</beans>

###運行Main###

public class Main {

    public static void main (String [] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-bean.xml");
	HelloWorld helloWorld = (HelloWorld) context.getBean("helloWorld");

	helloWorld.hello();
    }
}

結果輸出: 輸入圖片說明

本文涉及到的源代碼:king-spring

下一節:【第2章 Spring快速入門】2.2 WEB應用之HelloWorld

相關文章
相關標籤/搜索