這都2020年了,還不會搭Spring嗎?

Spring 框架

Spring 框架概念

​ Spring 是衆多開源java項目中的一員,基於分層的javaEE應用一站式輕量級開源框架,主要核心是 IOC(控制反轉/依賴注入)與 AOP(面向切面)兩大技術,實現項目在開發過程當中的輕鬆解耦,提升項目的開發效率。java

​ 在項目中引入 Spring 當即能夠帶來下面的好處 下降組件之間的耦合度,實現軟件各層之間的解耦。可使用容器提供的衆多服務,如:事務管理服務、消息服務等等。當咱們使用容器管理事務時,開發人員就再也不須要手工控制事務.也不需處理複雜的事務傳播。 容器提供單例模式支持,開發人員再也不須要本身編寫實現代碼。 容器提供了AOP技術,利用它很容易實現如權限攔截、運行期監控等功能。web

Spring-01.png

Spring 源碼架構

​ Spring 總共大約有20個模塊,由1300多個不一樣的文件構成。而這些組件被分別整合在覈心容器(Core Container)、Aop(Aspect Oriented Programming)和設備支持(Instrmentation)、數據訪問及集成(Data Access/Integeration)、Web、報文發送(Messaging)、測試6個模塊集合中。spring

  1. 核心容器:Spring-beans 和 Spring-core 模塊是 Spring 框架的核心模塊,包含控制反轉(Inversion of Control, IoC)和依賴注入(Dependency Injection, DI),核心容器提供 Spring 框架的基本功能。核心容器的主要組件是 BeanFactory,工廠模式的實現。BeanFactory 使用控制反轉(IOC) 思想將應用程序的配置和依賴性規範與實際的應用程序代碼分開。編程

    Spring 上下文Spring Context:Spring 上下文是一個配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企業服務,例如 JNDI、EJB、電子郵件、國際化、校驗和調度功能。數組

    Spring-Expression 模塊是統一表達式語言(unified EL)的擴展模塊,能夠查詢、管理運行中的對象,同時也方便的能夠調用對象方法、操做數組、集合等。它的語法相似於傳統EL,但提供了額外的功能,最出色的要數函數調用和簡單字符串的模板函數。websocket

  2. Spring-AOP:Spring-aop是Spring的另外一個核心模塊, 在Spring中,他是以JVM的動態代理技術爲基礎,而後設計出了一系列的Aop橫切實現,好比前置通知、返回通知、異常通知等。經過其配置管理特性,Spring AOP 模塊直接將面向切面的編程功能集成到了 Spring 框架中。因此,能夠很容易地使 Spring 框架管理的任何對象支持 AOP。架構

  3. Spring Data Access(數據訪問):由Spring-jdbc、Spring-tx、Spring-orm、Spring-jms和Spring-oxm 5個模塊組成 Spring-jdbc 模塊是 Spring 提供的JDBC抽象框架的主要實現模塊,用於簡化 Spring JDBC。mvc

    Spring-tx 模塊是SpringJDBC事務控制實現模塊。使用Spring框架,它對事務作了很好的封裝,經過它的Aop配置,能夠靈活的配置在任何一層。app

    Spring-Orm 模塊是ORM框架支持模塊,主要集成 hibernate, Java Persistence API (JPA) 和 Java Data Objects (JDO) 用於資源管理、數據訪問對象(DAO)的實現和事務策略。框架

    Spring-Jms 模塊(Java Messaging Service)可以發送和接受信息。

    Spring-Oxm 模塊主要提供一個抽象層以支撐OXM(OXM 是 Object-to-XML-Mapping 的縮寫,它是一個O/M-mapper,將java對象映射成 XML 數據,或者將 XML 數據映射成 java 對象),例如:JAXB, Castor, XMLBeans, JiBX 和 XStream 等。

  4. Web 模塊:由Spring-web、Spring-webmvc、Spring-websocket和Spring-webmvc-portlet 4個模塊組成,Web 上下文模塊創建在應用程序上下文模塊之上,爲基於 Web 的應用程序提供了上下文。Web 模塊還簡化了處理多部分請求以及將請求參數綁定到域對象的工做。

  5. 報文發送:即Spring-messaging模塊。

    Spring-messaging是Spring4 新加入的一個模塊,主要職責是爲Spring 框架集成一些基礎的報文傳送應用。

  6. 單元測試:即Spring-test模塊。Spring-test模塊主要爲測試提供支持

Spring 框架環境搭建

環境要求

​ JDK 版本:

​ JDK 1.7 及以上版本

​ Spring版本:

​ Spring 5.x版本

新建 Maven 項目

  1. 建立 Maven 的普通 Java 項目Spring-02.png
  2. 設置項目的座標Spring-03.png
  3. 設置項目的 Maven 環境Spring-04.png
  4. 設置項目的名稱和存放的工做空間Spring-05.png

若有疑問,加裙1080-355292一塊兒交流

調整項目環境

  1. 修改 JDK 版本

    <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <maven.compiler.source>1.8</maven.compiler.source>
     <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
  2. 修改單元測試 JUnit 版本

    <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>4.12</version>
     <scope>test</scope>
    </dependency>
  3. build標籤中的pluginManagement標籤

    <!--刪除build標籤中的pluginManagement標籤-->
    <build>
    </build>

添加 Spring 框架的依賴座標

Maven倉庫:<https://mvnrepository.com/>;

<!-- 添加Spring框架的核心依賴 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.2.4.RELEASE</version>
</dependency>

編寫 Bean 對象

package com.xxxx.service;

public class UserService {

    public void test(){
        System.out.println("Hello Spring!");
    }

}

添加Spring 配置文件

  1. 在項目的src下建立文件夾 resources(Alt+insert)

  2. 將 resources 標記爲資源目錄

    Spring-06.png

  3. 在 src\main\resources 目錄下新建 spring.xml 文件,並拷貝官網文檔提供的模板內容到 xml 中。

    <font color="red">配置 bean 到 xml 中,把對應 bean 歸入到 Spring 容器來管理</font>

    spring.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
           https://www.springframework.org/schema/beans/spring-beans.xsd">
    
      <!-- 
           xmlns 即 xml namespace  xml使用的命名空間
           xmlns:xsi 即xml schema instance xml 遵照的具體規範
           xsi:schemaLocation 本文檔xml遵照的規範 官方指定
      -->
      <bean id="userService" class="com.xxxx.service.UserService"></bean>
    
    </beans>
  4. 在 spring.xml 中配置 Bean 對象

    <!--
        id:bean對象的id,惟一標識。通常是Bean對象的名稱的首字母小寫
        class:bean對象的類路徑
    -->
    <bean id="userService" class="com.xxxx.service.UserService"></bean>

加載配置文件,獲取實例化對象

package com.xxxx;

import com.xxxx.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
    public static void main(String[] args) {
        // 獲取Spring上下文環境 (加載配置文件)
        ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
        // 經過getBean方法獲得Spring容器中實例化好的Bean對象 (實例化Bean對象)
        // userService表明的是配置文件中bean標籤的id屬性值
        UserService userService = (UserService) ac.getBean("userService");
        // 調用方法 (使用實例化對象)
        userService.test();
    }
}

image

相關文章
相關標籤/搜索