Spring--第一天
Spring框架簡介
1.認識框架
spring框架都包含在spring-framework-4.1.6.RELEASE-dist.jar的包中,對它進行解壓得到三個文檔:
- docs文檔(spring框架的幫助文檔,包括api和官方文檔說明)
- libs文檔(各種jar包,java框架的主要組成)
- schema文檔 (是各種.xsd文件,.xsd文件是DTD(xml的語法檢查器)的升級版,它主要用在spring框架的配置文件(applicationcontext文件)中)
3.1 xml語法檢查器:用來快速編程,給你提示補全等
3.2擴展性:每次引入一個.xsd文件,就引入了一個xml命名空間(xmlns),比DTD更簡潔一點。
從docs的官方文檔說明中知道:
spring框架由以下幾個組成,
1.最底層的test,是spring提供的測試用的
2.然後Core Comtainer核心容器,指spring框架的最基本的組成,也就是我們如果想用spring框架必須要引入Beans,Core ,Cntext,SpEl.這四個jar包。
Beans:對象容器。
Core:spring核心
Context:上下文對象
SpEl:spring的表達式
上面兩層是它的其他功能,都對應的相應的jar包,如使用AOP技術需要先引入spring-aop-4.1.6.RELEASE.jar包
2.Spring框架的功能和作用
spring的最主要功能包括:
- IOC/DI:控制反轉/依賴注入(總結:就是用一個容器,來管理我們需要實例化的所有對象)
- AOP:面向切面編程(爲了解決現在的縱向編程的問題,引入了橫向編程,在一個方法(切點)之前需要實現的功能(前置通知),在方法之後需要實現的功能(後置通知),所以它簡化了主要業務的繁瑣程度,使業務代碼需要執行的功能更加轉一,它的底層實現是代理設計模式,而且是動態代理,因爲代理模式(明星-經紀人)恰好也是能使明星更加專心演出,無需思考它的生活方面,行程方面的問題)
- 聲明式事務:它是基於通知的,它改變了aop的一些結構(通知--->切點)變爲了·(通知——>事務——>切點),這裏的事務通常是數據庫的回滾,提交。而數據庫的數據插入,成功就保存,失敗就回滾,剛好符合aop的橫向編程,所以spring框架幫我們寫好了事務處理模塊,我們只需要聲明在哪個方法上調用。
3.spring框架的搭建
1.導入jar包(最少5個),除了上面提到的四個核心包之外,還要導入一個commons-logging-1.1.3.jar日誌包
2.在 src 下新建 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">
<!-- id表示獲取到對象標識
class 創建哪個類的對象
-->
<bean id="peo" class="com.pojo.People"/>
</beans>
3.編寫測試方法
package com.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.pojo.People;
public class Test {
public static void main(String[] args) {
// People peo = new People();
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
People people = ac.getBean("peo",People.class);
System.out.println(people);
// String[] names = ac.getBeanDefinitionNames();
// for (String string : names) {
// System.out.println(string);
// }
}
}
4.IOC/DI
看了各種文檔,帖子,然而越看越抽象,個人覺得,就是在類與類之間加了一個容器,這個容器來創建和管理類的對象。通過這個容器實現瞭解耦。解程序員和類之間的耦。沒有這個容器時,一個類引用另一個類的對象,需要通過new來實例化另一個類的對象。有了這個容器之後,我們通過配置文件applicationcontext文件來在容器中創建對象,一個類引用另一個類的對象時,我們不需要實例化對象,只是從容器中得到對象。
5.spring中創建對象的三種方式
1.通過構造方法創建
無參構造
有參構造
2.實例工廠
3.靜態工廠
5. Bean屬性賦值
1.通過構造方法設值
2.設值注入(通過類中屬性的set方法)
6.IOC和DI
IOC和DI是一樣的。
IOC:控制反轉,是指把原來程序員寫代碼創建和管理對象的任務交給了Bean容器
DI:依賴注入,是指當一個類中需要另一個類的對象時,把另一個類的對象賦值給A的過程