Spring 是衆多開源java項目中的一員,基於分層的javaEE應用一站式輕量級開源框架,主要核心是 IOC(控制反轉/依賴注入)與 AOP(面向切面)兩大技術,實現項目在開發過程當中的輕鬆解耦,提升項目的開發效率。java
在項目中引入 Spring 當即能夠帶來下面的好處 下降組件之間的耦合度,實現軟件各層之間的解耦。可使用容器提供的衆多服務,如:事務管理服務、消息服務等等。當咱們使用容器管理事務時,開發人員就再也不須要手工控制事務.也不需處理複雜的事務傳播。 容器提供單例模式支持,開發人員再也不須要本身編寫實現代碼。 容器提供了AOP技術,利用它很容易實現如權限攔截、運行期監控等功能。web
Spring 總共大約有20個模塊,由1300多個不一樣的文件構成。而這些組件被分別整合在覈心容器(Core Container)、Aop(Aspect Oriented Programming)和設備支持(Instrmentation)、數據訪問及集成(Data Access/Integeration)、Web、報文發送(Messaging)、測試6個模塊集合中。spring
核心容器: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
Spring-AOP:Spring-aop是Spring的另外一個核心模塊, 在Spring中,他是以JVM的動態代理技術爲基礎,而後設計出了一系列的Aop橫切實現,好比前置通知、返回通知、異常通知等。經過其配置管理特性,Spring AOP 模塊直接將面向切面的編程功能集成到了 Spring 框架中。因此,能夠很容易地使 Spring 框架管理的任何對象支持 AOP。架構
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 等。
Web 模塊:由Spring-web、Spring-webmvc、Spring-websocket和Spring-webmvc-portlet 4個模塊組成,Web 上下文模塊創建在應用程序上下文模塊之上,爲基於 Web 的應用程序提供了上下文。Web 模塊還簡化了處理多部分請求以及將請求參數綁定到域對象的工做。
報文發送:即Spring-messaging模塊。
Spring-messaging是Spring4 新加入的一個模塊,主要職責是爲Spring 框架集成一些基礎的報文傳送應用。
JDK 版本:
JDK 1.7 及以上版本
Spring版本:
Spring 5.x版本
若有疑問,加裙1080-355292一塊兒交流
修改 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>
修改單元測試 JUnit 版本
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
build標籤中的pluginManagement標籤
<!--刪除build標籤中的pluginManagement標籤--> <build> </build>
Maven倉庫:<https://mvnrepository.com/>;
<!-- 添加Spring框架的核心依賴 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.4.RELEASE</version> </dependency>
package com.xxxx.service; public class UserService { public void test(){ System.out.println("Hello Spring!"); } }
在項目的src下建立文件夾 resources(Alt+insert)
將 resources 標記爲資源目錄
在 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>
在 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(); } }