一.spring的作用
spring 就是為了讓我們以后能夠做大的項目准備的。spring核心的功能就是一個工廠模式,spring相當於為你的項目專門成立一個一個工廠,這個工廠負責創建對象 ,維護對象之間的關系。你需要對象了,以前是直接new,現在
從spring 的工廠里面獲取。

spring 的核心完成兩個工作:
1,創建對象
2,維護對象之間的依賴關系。
二.spring的基本配置
1.創建java項目,導入jar包
2.在src下創建主配置文件applicationContext
3.創建實體類
創建Display的接口:

創建Display的兩個實現類:
LgDisplay:

SumSingDisplay:

創建CPU接口:
創建CPU接口是實現類InterlCpu:
創建E470筆記本的類,這個類要依賴兩個屬性一個是顯示器Display,一個是Cpu:
/* 組裝E470筆記本 */ public class E470 { //這里需要依賴接口 private Display display; private Cpu cpu; /** * 筆記本工作的方法 */ public void work(){ //cpu進行計算 cpu.calc(); //顯示器顯示 display.display(); } public Display getDisplay() { return display; } public void setDisplay(Display display) { this.display = display; } public Cpu getCpu() { return cpu; } public void setCpu(Cpu cpu) { this.cpu = cpu; } }
4.在spring的工廠中創建對象
<!--創建一個Lg顯示器的對象 spring中以bean的方式管理對象,一個bean就代表創建了一個對象 class 配置類的完全限定名,表明該對象是哪個類的對象 id 配置類的唯一標識 --> <bean id="lgDisplay" class="com.aaa.spring.entity.LgDisplay"></bean> <!--創建一個三星顯示器的對象--> <bean id="sumSingDisplay" class="com.aaa.spring.entity.SumSingDisplay"></bean> <!--創建英特爾cpu的對象--> <bean id="interlCpu" class="com.aaa.spring.entity.InterlCpu"></bean> <!--創建E470筆記本的對象--> <bean id="e470" class="com.aaa.spring.entity.E470"> <!--維護對象之間的依賴關系 ref是引用哪個對象,這里要寫對象的id --> <property name="display" ref="lgDisplay"></property> <property name="cpu" ref="interlCpu"></property> </bean> </beans>
5.測試
/** * 測試從spring工廠中獲取對象 */ public class Test01 { public static void main(String[] args) { //創建spring的工廠類的對象 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); //從工廠中獲取對象 E470 e470 = (E470)context.getBean("e470"); //調用對象的方法 e470.work(); } }
總結:
spring的作用 1,創建對象 2,維護對象之間的關系
IOC 控制反轉 主要是指在項目開發中對象創建方式的變化,原來不使用spring 創建對象是在程序中創建的,這樣
對象和程序的耦合性就較強,不利用之后項目的擴展和維護。使用了spring之后,對象創建就放到工廠中進行了。
DI 依賴注入 主要指的對象之間關系的維護。原來在程序中如果一個對象要依賴另外一個對象了,可以直接調用對
象屬性的setter方法。使用spring之后,我們通過spring依賴注入的方式維護對象之間的關系。
三.spring的BeanFactory和ApplicationContext
BeanFactory是ApplicationContext的父接口,BeanFactory接口定義了一些spring工廠最底層的使用的方法,一
般在spring的源碼中我們使用BeanFactory,但是該類不建議程序員直接使用,建議程序員使用
ApplicationContext接口,該接口對BeanFactory功能進行了一些擴展:
1,提供spring的國際化支持
2,提供了事物的處理方式
3,可以加載多個主配置文件
以后一般開發中使用ApplicationContext接口,但是接口不能直接使用,我們可以同
ClassPathXmlApplicationContext類來實例化這個接口。我們也可以使用FileSystemXmlApplicationContext來實例化該接口:
