Spring概述:
Spring是一個輕量級的 控制反轉(IoC) 和 面向切面(AOP) 的容器框架。
-
控制翻轉IoC:Inverse of Control, 將原本在程序中手動創建對象的控制權交由Spring框架管理, 就是創建對象控制權被反轉到了Spring框架。
-
依賴注入DI:Dependency Injection ,在Spring框架負責創建Bean對象時,動態將依賴對象注入到Bean組件
-
AOP面向切面:
spring優勢:
- 方便解耦,簡化開發:Spring==對象工廠,專門負責生成Bean,可以將所有對象創建和依賴關係維護由Spring管理
- AOP編程的支持:方便實現對程序進行權限攔截、運行監控等功能
- 聲明式事務支持:只需通過配置就可完成對事務的管理,無需手動編程
- 測試方便:支持Junit4,可以通過註解測試Spring程序
- 支持框架集成,封裝JavaEE開發中一些難用的API,降低開發難度
Spring 快速入門 :
- 下載Spring 開發包
- 導入Spring的jar包
- 配置Spring的核心xml文件
- 在程序中讀取Spring的配置文件來獲取Bean
1.開發包
- spring-framework-3.2.0.RELEASE-dist.zip 【Spring的核心包】
- spring-framework-3.0.2.RELEASE-dependencies.zip 【Spring的依賴包】
spring與jdk版本要求 |
spring3.x 支持 jdk7、jdk6 |
spring4.x 支持 jdk8、jdk7 |
|
spring5.x 穩定支持 jdk8 |
2.核心jar包 :4核心(beans,core,context,expression) + 1依賴(common-logging.jar)
spring-core-3.2.2.RELEASE.jar |
包含Spring框架基本的核心工具類 |
spring-beans-3.2.2.RELEASE.jar |
配置文件、創建和管理bean ;IoC和DI操作相關 |
spring-context-3.2.2.RELEASE.jar |
在基礎IoC功能上的擴展服務支持和各種視圖層框架的封裝 |
spring-expression-3.2.2.RELEASE.jar |
Spring表達式語言 |
com.springsource.org.apache.commons.logging-1.1.1.jar |
用於處理日誌,第三方 |
3.Spring IoC控制反轉創建實例
spring內部創建對象的原理:
- 解析xml文件,獲取類名,id,屬性
- 通過反射,用類型創建對象
- 給創建的對象賦值
- 1.配置文件beans.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>
- 2.配置一個bean 【對象】 userService
-
<bean id="userService" class="路徑.UserServiceImpl實現類"> <!-- 依賴注入數據,調用屬性的set方法 --> <property name="name" value="zhangsan"></property> </bean>
-
//userService對象的name屬性 private String name; public String getName() { return name; } public void setName(String name) { this.name = name; }
-
依賴注入注意:對象的屬性必須提供set方法
- 3.從spring容器獲取userService
-
//1.加載beans.xml 這個spring的配置文件,內部就會創建對象 ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); //2.從spring容器獲取userSerivce對象 IUserSerivce userSerivce1 = (IUserSerivce) context.getBean("userService"); //3.調用對象方法: userservice userserviceimpl 接口指向實現類 userSerivce1.add();