Spring概述簡介優勢總體架構建立測試項目參考文獻html
官網: spring.io/java
官方下載地址: repo.spring.io/libs-releas…git
GitHub: github.com/spring-proj…github
一句話歸納:Spring 是一個輕量級的控制反轉(IoC)和麪向切面(AOP)的開源容器(框架)。web
Spring 框架是一個分層架構,它包含一系列的功能要素,並被分爲大約20個模塊,以下圖所示:spring
一、Core Container數據庫
Core Container(核心容器)包含有 Core、Beans、Context 和 SpEL 模塊。其中 Core 和 Beans 模塊是框架的基礎部分,提供 IoC(控制反轉)和依賴注入功能。核心容器的主要組件是 BeanFactory
,它是工廠模式的實現。BeanFactory
使用控制反轉(IoC)模式將應用程序的配置和依賴性規範與實際的應用程序代碼分開。apache
Core 模塊主要包含 Spring 框架基本的核心工具類。編程
Beans 模塊是全部應用都要用到的,它包含訪問配置文件、建立和管理 bean 以及進行 Inversion of Control/Dependency Injection(Ioc/DI) 操做相關的全部類。數組
Context 模塊構建於 Core 和 Beans 模塊基礎之上,提供了一種相似於 JNDI 註冊器的框架式的對象訪問方法。Context 模塊繼承了 Beans 的特性,爲 Spring 核心提供了大量的擴展,添加了對國際化(如資源綁定)、事件傳播、資源加載和對 Context 的透明建立的支持。ApplicationContext 接口是 Context 模塊的關鍵。
SpEL 全稱爲「 Spring Expression Language 」,它是個單獨模塊,只依賴於 Core 模塊,不依賴於其餘模塊,能夠單獨使用。該模塊提供了一個強大的表達式語言用於在運行時查詢和操縱對象,該語言支持設置/獲取屬性的值,屬性的分配,方法的調用,訪問數組上下文、容器和索引器、邏輯和算術運算符、命名變量以及從 Spring 的 IoC 容器中根據名稱檢索對象。
二、Data Access/Integration
JDBC 模塊提供了一個 JDBC 抽象層,它能夠消除冗長的 JDBC 編碼和解析數據庫廠商特有的錯誤代碼,這個模塊包含了 Spring 對 JDBC 數據訪問進行封裝的全部類。
ORM 模塊爲流行的對象-關係映射 API,如 JPA、JDO、Hibernate、iBatis 等,提供了一個交互層,利用 ORM 封裝包,能夠混合使用全部 Spring 提供的特性進行 O/R 映射,如前邊提到的簡單聲明性事務管理。
OXM 模塊提供了一個 Object/XML 映射實現的抽象層,Object/XML 映射實現抽象層包括 JAXB、Castor、XMLBeans、JiBX 和 XStream。
JMS(java Message Service)模塊主要包含了一些製造和消費消息的特性。
Transaction 模塊支持編程和聲明式事物管理,這些事務類必須實現特定的接口,而且對全部 POJO 都適用 。
三、Web
Web 上下文模塊創建在應用程序上下文模塊之上,爲基於 Web 的應用程序提供了上下文,因此 Spring 框架支持與 Jakarta Struts 的集成。Web 模塊還簡化了處理多部分請求以及將請求參數綁定到域對象的工做。Web 層包含了 Web、 Web-Servlet、Web-Struts和Web、Porlet模塊 。
Web 模塊:提供了基礎的面向 Web 的集成特性,例如:多文件上傳、使用 Servlet、Listeners 初始化 IoC 容器以及一個面向 Web 的應用上下文,它還包含了 Spring 遠程支持中 Web 的相關部分。
Web-Servlet 模塊 web.servlet.jar:該模塊包含 Spring 的 Model-View-Controller(MVC)實現,Spring 的 MVC 框架使得模型範圍內的代碼和 web forms 之間可以清楚地分離開來,經過策略接口,MVC 框架變成爲高度可配置的,MVC 容納了大量視圖技術,其中包括 JSP、Velocity、Tiles、iText 和 POI。
Web-Struts 模塊:該模塊提供了對 Struts 的支持,使得類在 Spring 應用中可以與一個典型的 Struts Web 層集成在一塊兒。
Web-Porlet 模塊:提供了用於 Portlet 環境和 Web-Servlet 模塊的 MVC 的實現。
四、AOP
AOP 模塊: 經過配置管理特性,Spring AOP 模塊直接將面向切面的編程功能 , 集成到了 Spring 框架中。因此,能夠很容易地使 Spring 框架管理任何支持 AOP的對象。Spring AOP 模塊爲基於 Spring 的應用程序中的對象提供了事務管理服務。經過使用 Spring AOP,不用依賴組件,就能夠將聲明性事務管理集成到應用程序中。
五、Test
Test 模塊支持使用 Junit 和 TestNG 對 Spring 組件進行測試。
一、新建 maven 項目,引用對 spring 的依賴
新建一個空白的 maven 項目 ,以下圖所示:
最後在 pom.xml 文件中添加對 Spring 模塊的依賴。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.msdn</groupId>
<artifactId>spring_study</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>spring-chap1</module>
</modules>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
</dependencies>
</project>
複製代碼
爲了方便後期的學習,咱們把每一個不一樣的測試案例放在不一樣的 Module 下,而不用每次都新建一個 Project,也方便後期複習。
把上述新建的項目下的 src 文件夾刪除掉,而後點擊項目根目錄,右鍵 new 一個 Module。
以後的步驟就和上述同樣。
二、在 src/main/resource 下添加 application_context.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="user" class="com.msdn.bean.User"/>
</beans>
複製代碼
三、 建立測試 bean 和啓動類
public class User {
private String name;
public User() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
'}';
}
}
複製代碼
public class MyBeanTest {
@Test
public void MyBean(){
ApplicationContext context = new ClassPathXmlApplicationContext("application_context.xml");
// BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("application_context.xml"));//XmlBeanFactory類已過期
User user = (User) context.getBean("user");
user.setName("hresh");
System.out.println(user);
}
}
複製代碼
執行結果爲:
上述使用到了 IoC 的知識,主要是爲了測試項目的成功構建,後續章節會詳細講解關於 IoC 的內容。
https://www.cnblogs.com/java-chen-hao/p/11046190.html