一、概述 只要用框架開發java,一定躲不過spring,Spring是一個輕量級的Java開源框架,存在的目的是用於構建輕量級的J2EE應用。Spring的核心是控制反轉(IOC)和麵向切麵編程(AOP)。spring有如下特點: 輕量級:應用大小和應用開支,包括應用方式 DI/IoC:提供松耦合 ...
一、
只要用框架開發java,一定躲不過spring,Spring是一個輕量級的Java開源框架,存在的目的是用於構建輕量級的J2EE應用。Spring的核心是控制反轉(IOC)和麵向切麵編程(AOP)。spring有如下特點:
-
輕量級:應用大小和應用開支,包括應用方式
-
DI/IoC:提供松耦合的一種實現技術
-
AOP:切麵編程將業務邏輯從應用服務中分離
-
容器:包含並管理應用對象的生命周期和配置
-
框架:使用組件配置組合成複雜的應用,並提供很多基礎功能
由於spring是一個容器型的框架,所以它不排斥其他框架,並且可以輕鬆的整合其他框架。
Spring以一種非侵入式的方式來管理你的代碼,Spring提倡”最少侵入”,這也就意味著你可以適當的時候安裝或卸載Spring 。
二、模塊
Spring框架大約由20多個小模塊組成,這些模塊分為:核心容器,數據訪問/集成,Web,面向切麵編程(AOP),消息和測試等等,如下圖所示
下麵逐一介紹這幾大模塊:
1.核心容器:核心容器包括spring-core, spring-beans,spring-context, spring-context-support, 和spring-express,其中spring-core和spring-beans模塊提供框架的基礎部分,包括控制反轉和依賴註入。BeanFactory是一個複雜的工廠模式的實現。上下文(spring-context)模塊建立在Core和Bean模塊的基礎之上:它提供了一種框架風格來訪問對象,類似於JNDI註冊表。Context模塊繼承了Bean模塊的特點並增加了對國際化、事件傳播、資源載入等的支持。ApplicationContext介面是Context模塊的焦點。spring-context-support支持將第三方庫集成到Spring應用中,例如緩存,JavaMail、模板引擎等。spring-expression模塊為運行時查詢和操作對象提供了強大的表達式語言,它是JSP2.1中的EL語言的擴展,這種語言支持設置和獲取屬性值,屬性賦值,方法調用,訪問數組,邏輯和算術運算符,還支持列表投影、選擇和常見的聚合。
2.面向切麵:Spring的AOP封裝包提供了符合AOP Alliance規範的面向切麵的編程實現,讓你可以定義,例如方法攔截器和切點,從邏輯上講,從而減弱代碼的功能耦合,清晰的被分離開。
3.消息傳送:Spring FrameWork 4包括一個spring-messaging模塊,它是從Spring集成項目的關鍵抽象,如Message, MessageChannel,MessageHandle。該模塊該包含一組註釋映射消息的方法,類似Spring MVC基於註釋的編程模型。
4.數據訪問/集成:這一層包括JDBC、ORM、OXM、JMS和事務模塊。spring-jdbc模塊提供了一個JDBC抽象層從而消除了令人乏味的JDBC編程和解析資料庫提供商特定的錯誤。spring-tx模塊支持類的編程和聲明式事務管理,實現特殊的介面和你的POJO(Plain Old Java Objects)。spring-orm模塊提供了流行的對象-關係映射集成層API,包括JPA、JDO和Hibernate。使用spring-orm模塊可以使這ORM框架結合Spring提供的其他特性,比如前面提到的簡單的聲明式事務管理。spring-oxm模塊提供了一個抽象層,支持對象/XML映射的實現,如JAXB、 Castor、XMLBeans、 JiBX和XStream。
6.測試層:spring-test模塊支持單元測試和包含Junit或者TestNG的集成測試,它提供了Spring的ApplicationContext一致性裝載和這些上下文的緩存機制,它還提供了可用於測試代碼隔離的模擬對象。
三、動手創建
概念先講到這,先上手創建項目找找感覺。使用的是idea開發工具。
在Groupid中填入項目的包名即可。Artifactid自定義即可,這裡建議與項目名稱一致。版本預設在Groupid中填入項目的包名即可。Artifactid自定義即可,這裡建議與項目名稱一致。版本預設.
另外的是maven相關設置,不懂得同學可以先去學學maven,項目中都是必學的
選擇文件位置
創建完成,項目架構如圖(img與md文件是說明文件,不計其中)
在main下新建文件夾resources用於存放資源文件
在resources上右鍵,選擇mark directory as 選中Resources Root
添加spring依賴包
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.6.RELEASE</version> </dependency>
pom.xml的完整配置如下:
<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.yuanqinnan</groupId> <artifactId>springLearn</artifactId> <version>1.0-SNAPSHOT</version> <name>springLearn</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.6.RELEASE</version> </dependency> </dependencies> <build> </build> </project>
在剛纔新建的resources下新建META-INF包,在META-INF下新建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"> </beans>
新建test包和HelloWorld.java,Main.java結構如下:
代碼如下:
public class HelloWorld { private String info; public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } } public class Main { public static void main(String[] args) { //讀取配置文件 ApplicationContext ctx=new ClassPathXmlApplicationContext("META-INF/applicationContext.xml"); //獲取bean的實例 HelloWorld t=(HelloWorld) ctx.getBean("hello"); //調用方法 System.out.println(t.getInfo()); } }
在applicationContext.xml中配置bean
<?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="hello" class="com.yuanqinnan.test.HelloWorld"> <property name="info" value="Hello,This is my first Spring Application!"></property> </bean> </beans>
右鍵運行Main
得到結果:
如此,一個spring項目便創建成功,後面再繼續學習spring的其他知識
源碼地址:https://gitee.com/yuanqinnan/spring