1. 程式人生 > 實用技巧 >01.Spring5.x入門

01.Spring5.x入門

第一章:Spring基礎

Spring概述

Spring 是一個開源的Java企業級應用開發框架。是一個分層的輕量級一站式(full-stack)框架,可以叫做家族型的框架,也可以叫做Spring全家桶。

核心

IOC 控制反轉(Inversion of Control ):Spring通過控制反轉實現了鬆散耦合,物件們給出它們的依賴,而不是建立或查詢依賴的物件,後續創作者將描述改為DI(Dependency Injection,依賴注入)。

AOP 面向切面(AOP):面向切面的程式設計,把應用業務邏輯和系統服務分開。

優點

  • 作為容器,Spring 包含並管理應用中物件的生命週期和配置。
  • 面向切面程式設計能幫助我們無耦合的實現日誌記錄,效能統計,安全控制
  • 提供了一套MVC框架,叫SpringMVC,網際網路企業主流開發框架。
  • Spring 提供一個持續的事務管理介面,能非常簡單的幫我們管理資料庫事務。
  • 支援各種開源框架,可以與第三方框架(如Hibernate、Struts、MyBatis)無縫整合,而且自己也提供了一套JDBC訪問模板來方便資料庫訪問。
  • 能方便的與Java EE(如Java Mail、任務排程)整合,與更多技術整合(比如快取框架)
  • 異常處理:Spring 提供方便的API把具體技術相關的異常(比如由JDBC,Hibernate or JDO丟擲的)轉化為一致的unchecked 異常。
  • Junit支援,可以使用Junit進行測試

Spring 的框架結構

Data Access/Integration層:包含有JDBC、ORM、OXM、JMS和Transactions模組。

Web:包含了WebSocket、Web、WebMVC、WebFlux模組。

AOP:模組提供了一個符合AOP聯盟標準的面向切面程式設計的實現。

Aspects:整合自Aspects框架,主要為AOP提供多種實現

Instrument:基於JavaSE中的java.lang.instrument進行設計,也是為AOP的實現提供支援

Messaging:提供訊息協議支援

Core Container(核心容器):包含有Beans、Core、Context和Expression(SpEL)模組。

Test:支援使用JUnit和TestNG對Spring元件進行測試。

Spring官網介紹

第一個Spring程式

  1. 新建一個空的 Java maven專案,命名為【spring01】

  2. 修改pom.xml檔案,增加如下依賴

  <properties>
      <spring.version>5.1.5.RELEASE</spring.version>
  </properties>

  <dependencies>
      <!-- bean context core expression -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
  </dependencies>

3.在【src/main/java】下新建一個【com.hliedu.pojo.Drinks】類:

package com.hliedu.pojo;
/**
 * - 飲品POJO
 * 
 * - 帶你輕鬆學Java:恆驪學堂
 * www.hliedu.com
 * QQ群:107184365
 *
 */
public class Drinks {  
    private String fruit;   // 型別
    private String sugar;   // 糖分描述
    private String size;    // 大小杯    
    private int money;        //金額
    /* setter and getter */
}

4.在 【src/main/resources】 目錄下新建一個 【applicationContext.xml】 檔案,通過 xml 檔案配置的方式裝配我們的 bean:

<?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 name="drinks" class="com.hliedu.pojo.Drinks">
        <property name="fruit" value="橙子"/>
        <property name="sugar" value="多糖"/>
        <property name="size" value="超大杯"/>
    </bean>
</beans>

在 【src/test/java】下新建一個【com.hliedu.test.DrinksTest】類:

package com.hliedu.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.hliedu.pojo.Drinks;

public class DrinksTest {

    public static void main(String[] args) {
        ApplicationContext  context = new 
                ClassPathXmlApplicationContext("applicationContext.xml");
        Drinks drinks = (Drinks)context.getBean("drinks");
        
        String fruit = drinks.getFruit();
        String size = drinks.getSize();
        String sugar = drinks.getSugar();
        System.out.println(drinks);
        System.out.println("果汁口味:" + fruit +",大小:" 
                            + size + ",是否加糖:" + sugar);
    }
}

  • 總結:

  • 傳統的方式:
    通過new 關鍵字主動建立一個物件

  • IOC方式:
    物件的生命週期由Spring來管理,直接從Spring那裡去獲取一個物件。 IOC是反轉控制 (Inversion Of Control)的縮寫,就像控制權從本來在自己手裡,交給了Spring。