一. spring是什麼?
Spring是分層的JavaSE/EE (一站式) 輕量級開源的容器框架,以IOC(Inverse of Control 控制反轉:物件之間的關係由容器建立,降低了程式之間的依賴性)和AOP(Aspect Oriented Programming 面向切面程式設計)為核心的容器框架
一站式、分層:
web層:Spring MVC
持久層:JDBC Template (applicationContext.xml)
業務層:Spring的Bean管理(Bean:是spring根據使用者提供相應的需求建立的物件,由IOC管理)(service)
spring官網:https://spring.io/
二.spring受歡迎的原因
Spring的英文翻譯為春天,可以說是給Java程式設計師帶來了春天,因為它極大的簡化了開發,有效的解決了當時軟體開發比較複雜的問題(當時採用EJB開發JAVA EE應用,但EJB存在著學習成本太高,開發效率比較低,資源消耗很高的問題)。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限於伺服器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java應用都可以從Spring中受益。可以說Spring是一個提供了更完善開發環境的一個框架,可以為POJO(Plain Ordinary Java Object)物件提供企業級的服務。
Spring的優秀之處:
1、最完善的輕量級核心框架。
2、簡化了開發,方便解耦
3、 宣告式事務的支援:只需要通過配置就可以完成對事務的管理,而無需手動程式設計
4、整合了Toplink, Hibernate, JDO, and iBATIS SQL Maps等優秀框架。
5、強大的AOP功能:Spring提供面向切面程式設計,可以方便的實現對程式進行許可權攔截、執行監控等功能。
6、 方便程式的測試:Spring對Junit4支援,可以通過註解方便的測試Spring程式
三.spring框架的七大組成模組
3.1 核心容器模組
這是Spring框架最基礎的部分,所有的Spring模組都是在核心容器之上構建的。它提供了依賴注入(DependencyInjection)特徵來實現容器對Bean的管理。這裡最基本的概念是BeanFactory,它是任何Spring應用的核心。BeanFactory是工廠模式的一個實現,它使用IOC(控制反轉)將應用配置和依賴說明從實際的應用程式碼中分離出來。
3.2 應用上下文(Context)模組(.xml檔案)
核心模組的BeanFactory使Spring成為一個容器,而上下文模組使它成為一個框架。這個模組擴充套件了BeanFactory的概念,增加了對國際化(I18N)訊息、事件傳播以及驗證的支援(Spring 上下文是一個配置檔案,向 Spring 框架提供上下文資訊)。
另外,這個模組提供了許多企業服務,例如電子郵件、JNDI訪問、EJB整合、遠端以及時序排程(scheduling)服務。也包括了對模版框架例如Velocity和FreeMarker整合的支援。
3.3 Spring的AOP模組
Spring在它的AOP模組中提供了對面向切面程式設計的豐富支援。這個模組是在Spring應用中實現切面程式設計的基礎。為了確保Spring與其它AOP框架的互用性,Spring的AOP支援基於AOP聯盟定義的API。AOP聯盟是一個開源專案,它的目標是通過定義一組共同的介面和元件來促進AOP的使用以及不同的AOP實現之間的互用性。通過訪問他們的站點,你可以找到關於AOP聯盟的更多內容。
Spring的AOP模組也將後設資料程式設計引入了Spring。使用Spring的後設資料支援,你可以為你的原始碼增加註釋,指示Spring在何處以及如何應用切面函式。
3.4 JDBC抽象和DAO模組
使用JDBC經常導致大量的重複程式碼,取得連線、建立語句、處理結果集,然後關閉連線。Spring的JDBC和DAO模組抽取了這些重複程式碼,因此你可以保持你的資料庫訪問程式碼乾淨簡潔,並且可以防止因關閉資料庫資源失敗而引起的問題。
這個模組還在幾種
另外,這個模組還使用了Spring的AOP模組為Spring應用中的物件提供了事務管理服務。
3.5 物件/關係對映整合模組
對那些更喜歡使用物件/關係對映工具而不是直接使用JDBC的人,Spring提供了ORM模組。Spring並不試圖實現它自己的ORM解決方案,而是為幾種流行的
3.6 Spring的Web模組
Web上下文模組建立於應用上下文模組之上,提供了一個適合於Web應用的上下文。另外,這個模組還提供了一些面向服務支援。例如:實現檔案上傳的multipart請求,它也提供了Spring和其它Web框架的整合,比如Struts、WebWork。
3.7 Spring的MVC框架模組
Spring為構建Web應用提供了一個功能全面的MVC框架。雖然Spring可以很容易地與其它MVC框架整合,例如Struts,但Spring的MVC框架使用IoC對控制邏輯和業務物件提供了完全的分離。
它也允許你宣告性地將請求引數繫結到你的業務物件中,此外,Spring的MVC框架還可以利用Spring的任何其它服務,例如國際化資訊與驗證。
四 .入門案例
4.1 匯入依賴
<dependencies>
<!-- Spring的核心依賴-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.10</version>
</dependency>
<!-- 用於測試的依賴-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
</dependencies>
4.2 在Java的service建立介面和它的實現類
UserService的介面
package com.qf.service; public interface UserService { public void addUser(); public void deleteUser(); }
UserService的實現類
package com.qf.service.impl; import com.qf.service.UserService; public class UserServiceImpl implements UserService { @Override public void addUser() { System.out.println("addUser...."); } @Override public void deleteUser() { System.out.println("deleteUser...."); } }
4.3 建立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></bean>標籤:建立bean物件 --> <!-- 無參構造建立物件 --> <bean id="userService" class="com.qf.service.impl.UserServiceImpl"></bean>
4.4 建立測試類
public class SpringTest { @Test public void test() { //載入配置檔案,建立applicationContext物件 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); //獲取Bean物件(即userService) UserService userService = (UserService)applicationContext.getBean("userService"); //呼叫方法 userService.addUser(); userService.deleteUser(); }
4.5 測試結果
addUser....
deleteUser....
Process finished with exit code 0