這章開始學習SSH中最後的一個框架spring。Spring是一個開放源代碼的設計層面框架,他解決的是業務邏輯層和其他各層的松耦合問題,因此它將面向介面的編程思想貫穿整個系統應用。 首先就來學習一下IOC,它的好處就是降低了耦合,主要是通過bean之間的依賴關係儘可能地抓換為關聯關係。 那麼來基於m ...
這章開始學習SSH中最後的一個框架spring。Spring是一個開放源代碼的設計層面框架,他解決的是業務邏輯層和其他各層的松耦合問題,因此它將面向介面的編程思想貫穿整個系統應用。
首先就來學習一下IOC,它的好處就是降低了耦合,主要是通過bean之間的依賴關係儘可能地抓換為關聯關係。
那麼來基於maven項目來配置一個spring吧。
首先可以下載一個spring的插件:可在eclipse->Help->Eclipse Marketplace中搜索spring,然後找到spring tools進行下載即可,其它下載方式就不過多介紹了。
第一步:maven項目中的pom.xml中導入spring的依賴:spring-context,我以4.3.10版本為例
<!-- spring-context 依賴 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.10.RELEASE</version> </dependency>
第二步:在src/main/resources文件夾下建立一個xml,取名為applicationContext.xml。在裡面加上spring表頭文件,如下
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"> </beans> 標簽的解釋: xmlns=XML Name space xmlns: 關於初始化bean的格式文件地址 xmlns:xsi: 輔助初始化bean xsi:context: 關於spring上下文,包括載入資源文件 xmlns:tx 事務標簽的約束 xmlns:aop aop(面向切麵)標簽的約束 xsi:schemaLocation: 用於聲明瞭目標名稱空間的模式文檔
第三步:新建一個人的類,給上name,age屬性,封裝構造,tostring即可。
第四步:開始配置一個bean,來實現IOC。在applicationContext.xml,配置如下:
<bean id="person" class="com.entity.Person"></bean>
//id為這個bean的名稱自己定義就好,class為要配置類的全限定路徑
//當然也可以使用name屬性來代替id屬性,name屬性可以使用特殊符號來定義名稱
第五步:再建立一個類,用main方法或者用junit的@Test來進行測試,測試代碼如下
// 延時載入(懶載入) 返回的對象只有一個 單列模式 // 載入文件 BeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml")); 獲取bean對象 Person p = (Person) factory.getBean("person"); System.out.println(p);
// 及時載入 一個bean能夠創建多個對象 ApplicationContext aContext = new ClassPathXmlApplicationContext("applicationContext.xml"); // 獲取bean對象 Person p = (Person) aContext.getBean("person"); System.out.println(p);
這樣一個簡單的bean就配置完了。
我們可以在bean後面加上一個屬性scope以及init-method屬性。
scope屬性值:
singleton(預設值)
在每個Spring Ioc容器中一個bean定義對應一個對象實例(單例模式)
prototype
一個bean定義對應多個對象實例.
request
在一次HTTP請求中,一個bean定義對應一個實例;即每次HTTP請求將會有各自的bean實例,它們依據某個bean定義創建而成。該作用域僅在基於web的Spring ApplicationContext情形下有效.
session
在一個HTTP Session中,一個bean定義對應一個實例。該作用域僅在基於web的Spring ApplicationContext情形下有效。
global session
在一個全局的HTTP Session中,一個bean定義對應一個實例。典型情況下,僅在使用portlet context的時候有效。該作用域僅在基於web的Spring ApplicationContext情形下有效.
init-method屬性的意思是這個bean初始化的時候調用哪個方法,屬性值為bean對應這個類中的方法名即可。
接下來看下註入方式:
首先bean標簽裡面添加property標簽,name對應屬性名稱,value對應屬性值
1.比如給這個對象的屬性設置預設值
<bean id="person" class="com.entity.Person"> <!--屬性設置預設值 --> <property name="name" value="哈哈"></property> <property name="age" value="11"></property> </bean>
2.註入一個集合(set,list),以list為例
在persion類中加上一個lsit<string>的屬性,封裝
註入:
<bean id="person" class="com.entity.Person"> //ls為list<string>的變數名 <property name="ls"> <list> <value>谷歌</value> <value>呵呵</value> <value>嘻嘻</value> </list> </property> </bean>
3.構造註入
//構造註入時,實體類中需存在相應的構造方法
<bean id="person" class="com.entity.Person"> <constructor-arg name="name" value="1"></constructor-arg> <constructor-arg name="age" value="18"></constructor-arg> </bean>
4.註入對象
新建實體類card,給上cid,cname兩個屬性,封裝構造。
在applicationContext.xml中增加一個bean
<bean id="card" class="com.entity.Card" > </bean>
card類中加上persion對象屬性,封裝。
然後在card的bean中註入
<bean id="card" class="com.entity.Card" > //name 對象變數名 <property name="person"> //ref對應屬性類在bean的標簽ID <ref bean="person" />
//idref元素的功能與<value>類似,只是idref多了驗證的功能
<!-- <idref bean="person" /> --> </property> </bean>
測試我這裡就沒試了。除了上面這幾種註入,還可以百度看看靜態工廠的方法註入以及實例工廠的方法註入。
本章結束!