概述
Spring 是最受歡迎的企業級 Java 應用程序開發框架。數以百萬的來自世界各地的開發人員使用 Spring 框架來創建好性能、易於測試、可重用的代碼。
Spring的用途不僅僅限於服務器端的開發。從簡單性、可測試性和鬆耦合性角度而言,絕大部分Java應用都可以從Spring中受益。
- 目的:解決企業應用開發的複雜性
- 功能:使用基本的JavaBean代替EJB,並提供了更多的企業應用功能
- 範圍:任何Java應用
Spring是一個輕量級控制反轉(IoC)和麪向切面(AOP)的容器框架。
體系結構
Spring 有可能成爲所有企業應用程序的一站式服務點,然而,Spring 是模塊化的,允許你挑選和選擇適用於你的模塊,不必要把剩餘部分也引入。
Spring 框架提供約 20 個模塊,可以根據應用程序的要求來使用。
核心容器
核心容器由核心,Bean,上下文和表達式語言模塊組成,它們的細節如下:
- 核心 模塊提供了框架的基本組成部分,包括 IoC 和依賴注入功能。
- Bean 模塊提供 BeanFactory,它是一個工廠模式的複雜實現。
- 上下文模塊 建立在由核心和 Bean 模塊提供的堅實基礎上,它是訪問定義和配置的任何對象的媒介。ApplicationContext 接口是上下文模塊的重點。
- 表達式語言 模塊在運行時提供了查詢和操作一個對象圖的強大的表達式語言。
數據訪問/集成
數據訪問/集成層包括 JDBC,ORM,OXM,JMS 和事務處理模塊,它們的細節如下:
- JDBC 模塊提供了刪除冗餘的 JDBC 相關編碼的 JDBC 抽象層。
- ORM 模塊爲流行的對象關係映射 API,包括 JPA,JDO,Hibernate 和 iBatis,提供了集成層。
- OXM 模塊提供了抽象層,它支持對 JAXB,Castor,XMLBeans,JiBX 和 XStream 的對象/XML 映射實現。
- JMS Java 消息服務模塊包含生產和消費的信息的功能。
- 事務 模塊爲實現特殊接口的類及所有的 POJO 支持編程式和聲明式事務管理。
Web
Web 層由 Web,Web-MVC,Web-Socket 和 Web-Portlet 組成,它們的細節如下:
- Web 模塊提供了基本的面向 web 的集成功能,例如多個文件上傳的功能和使用 servlet 監聽器和麪向 web 應用程序的上下文來初始化 IoC 容器。
- Web-MVC 模塊包含 Spring 的模型-視圖-控制器(MVC),實現了 web 應用程序。
- Web-Socket 模塊爲 WebSocket-based 提供了支持,而且在 web 應用程序中提供了客戶端和服務器端之間通信的兩種方式。
- Web-Portlet 模塊提供了在 portlet 環境中實現 MVC,並且反映了 Web-Servlet 模塊的功能。
其他
還有其他一些重要的模塊,像 AOP,Aspects,Instrumentation,Web 和測試模塊,它們的細節如下:
- AOP 模塊提供了面向方面的編程實現,允許你定義方法攔截器和切入點對代碼進行乾淨地解耦,它實現了應該分離的功能。
- Aspects 模塊提供了與 AspectJ 的集成,這是一個功能強大且成熟的面向切面編程(AOP)框架。
- Instrumentation 模塊在一定的應用服務器中提供了類 instrumentation 的支持和類加載器的實現。
- Messaging 模塊爲 STOMP 提供了支持作爲在應用程序中 WebSocket 子協議的使用。它也支持一個註解編程模型,它是爲了選路和處理來自 WebSocket 客戶端的 STOMP 信息。
- 測試 模塊支持對具有 JUnit 或 TestNG 框架的 Spring 組件的測試。
Hello World
IntelliJ IDEA中創建Spring項目
1、在點擊Create New Project創建新項目
2、勾選Spring點擊next
4、IntelliJ IDEA自動下載Spring所需要的jars
5、下載完成後項目創建成功
寫一個HelloWorld
1、創建HelloWorld類
public class HelloWorld {
private String name;
public void setName(String name) {
this.name = name;
}
public void sayHello() {
System.out.println("HelloWorld " + this.name);
}
}
2、在Spring的配置文件中加入如下內容。
<bean name="HelloWorld" class="com.hyb.first.spring.HelloWorld">
<property name="name" value="Spring"></property>
</bean>
3、使用spring的ioc方式創建對像
public class Main {
public static void main(String[] args) {
ApplicationContext context = new
ClassPathXmlApplicationContext("spring-config.xml");
HelloWorld helloWorld = (HelloWorld) context.getBean("HelloWorld");
helloWorld.sayHello();
}
}
4、運行結果:輸出 HelloWorld Spring