回顧
1 JDK安裝
前言
作為入門級的記錄帖,沒有過多的技術含量,簡單的搭建配置框架而已。這次講到spring,這個應該是SSH中的重量級框架,它主要包含兩個內容:控制反轉\依賴注入,和AOP面向切面編程。
1 控制反轉IOC\依賴注入DI,因為翻譯的不同,因此有兩個名字。
控制反轉意思就是說,當我們調用一個方法或者類時,不再有我們主動去創建這個類的對象,控制權交給別人(spring)。
依賴注入意思就是說,spring主動創建被調用類的對象,然后把這個對象注入到我們自己的類中,使得我們可以使用它。
舉個簡單的例子,程序猿加班了一個月,很累,想要放松下,於是去找人吃“麻辣燙”。
不使用spring的傳統做法是,我們自己通過陌陌微信等神器,主動尋找目標,花費大量人力物力,達成協議后,申請“場所”辦正事。
而使用spring的做法就很方便了,我們直接去某個場所,那個地方直接就有目標候着!
這是多么神奇的功能啊!
(此圖涉及暴力,18歲以下自行負責)
2 AOP面向切面編程
我們把一個方法看做是一個切面,在這個切面的前后或者周圍,都可以設置其他的處理方法,進行一些特殊的處理。
比如一個“吃蛋糕”的方法,在這個方法前需要“拆包裝”,方法后需要“打掃衛生”,都可以通過這種編程方式來實現。
那么下面看下它的編碼過程!
1 首先我們需要一個bean,用某種方法(設置注入需要有setter函數,構造注入需要有構造函數,相應的bean.xml配置文件也會不同)設定注入方式。
2 bean.xml,設置bean與類的關系,並關聯默認的注入值。
3 獲取bean.xml文件,創建實例對象,直接調用方法。
可以看到,我們開發的程序只有第三步的“創建實例對象,直接調用方法”,並沒有為他進行初始化等工作,就可以直接調用它的方法,獲取它的值。其實spring在程序初始化的時候,就會為我們把bean對應的對象注入進來,幫助我們完成初始化,因此我們只要通過一個引用對象,就可以直接調用了。
最后我們寫一個簡單的依賴注入的小樣例!
1 需要的jar包和文件結構
jar包下載地址:http://pan.baidu.com/s/1sjDbzrR
2 bean.xml配置文件,放在src目錄下
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns="http://www.springframework.org/schema/beans" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 6 <bean id="person" class="com.test.bean.Person"> 7 <property name="name" value="xingoo"/> 8 <property name="age" value="12"/> 9 </bean> 10 </beans>
3 Person類,這里使用的是set設置注入方式
package com.test.bean; public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void info(){ System.out.println("一起來吃麻辣燙!"); System.out.println("name:"+getName()+" age:"+getAge()); } }
4 test類
package testSpring; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.test.bean.Person; public class test { public static void main(String[] args){ ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");//讀取bean.xml中的內容 Person p = ctx.getBean("person",Person.class);//創建bean的引用對象 p.info(); } }
5 執行結果