国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

初學Java ssh之Spring 第三篇

2019-11-14 21:10:14
字體:
來源:轉載
供稿:網友
初學java ssh之SPRing 第三篇

  在這篇中,我學習了依賴注入的兩種方式:設值注入和構造注入。

  在我們以前的思維中,如果調用一個類時,我們都需要將其手動實例化,當我們創建被調用的工作不需要我們完成時,這就是控制反轉,當這個將被調用的實例過程被Spring完成,并注入調用者時,這就是依賴注入。

  一、先來學習學習設值注入:

  我們先來新建兩個接口規范,分別命名為Computer.java 和 Key.java,其路徑均在com.sep.basic.service包下:

  Computer.java代碼如下:

1 package com.sep.basic.service;2 3 public interface Computer {4     public void useKey();5 }

  Key.java代碼如下:

1 package com.sep.basic.service;2 3 public interface Key {4     //一個方法5     public String print();6 }

  接下來寫兩個實現類,分別命名為Lenovo.java和LogiTech.java,分別實現Computer和Key接口,路徑放在com.sep.basic.service.impl包下。

  Lenovo.java代碼如下:

 1 package com.sep.basic.service.impl; 2  3 import com.sep.basic.service.Computer; 4 import com.sep.basic.service.Key; 5  6 public class Lenovo implements Computer{ 7     private Key key; 8      9     public Key getKey() {10         return key;11     }12     13     //設值注入所需的setter方法14     public void setKey(Key key) {15         this.key = key;16     }17     18     //實現Computer接口中使用鍵盤的屬性19     public void useKey() {20         System.out.println(key.print());21     }22 23 }

  LogicTech.java的代碼如下:

 1 package com.sep.basic.service.impl; 2  3 import com.sep.basic.service.Key; 4  5 public class LogiTech implements Key{ 6     //實現Key接口中打印方法 7     public String print() { 8         return "用鍵盤打字"; 9     }10 11 }

  接下來我們配置applicationContext.xml文件,在其中加入如下代碼:

1     <!-- 將配置Lenovo實例 -->2     <bean id="lenovo" class="com.sep.basic.service.impl.Lenovo">3         <!-- 將logicTech實例注入到key屬性 -->4         <property name="key" ref="logicTech"></property>5     </bean>6     <!-- 將配置LogicTech實例 -->7     <bean id="logicTech" class="com.sep.basic.service.impl.LogicTech"></bean>

  ok,接下來回到我們之前測試用的主方法,SpringTest中,在其中加入如下代碼:

//通過Spring來完成注入Lenovo lenovo = ctx.getBean("lenovo", Lenovo.class);lenovo.useKey();

  現在運行,可以看到控制臺輸出“用鍵盤打字”。

  在applicationContext.xml中<bean>標簽中的id為bean的唯一標識,class為對應的需要實例化的類的地址。

  通過寫在SpringTest中代碼可以看出我們調用的lenovo類,我們并沒有手動實例化,而且其中調用的key,我們也沒有做過多余的操作,所有的工作都是spring幫我們完成的,它通過配置文件,不僅僅創建了我們的Lenovo實例,而且將其中設值注入的key實例也幫我們建好了。

  假如我們到時候需要改變key的值,我們只需要寫好對應的key的實現類,在配置文件中將

1 <!-- 將配置LogicTech實例 -->2  <bean id="logicTech" class="com.sep.basic.service.impl.LogicTech"></bean>

  改為

<!-- 將配置LogicTech實例 -->7     <bean id="logicTech" class="對應的實現類全名稱"></bean>

即可。

  二、我現在開始學習構造注入:

  簡單從字面意思上來看,構造注入是利用構造器來完成設置依賴關系的方式。

  首先我們需要對之前的Lenovo.class進行修改,修改后的代碼如下:

 1 package com.sep.basic.service.impl; 2  3 import com.sep.basic.service.Computer; 4 import com.sep.basic.service.Key; 5  6 public class Lenovo implements Computer{ 7     private Key key; 8      9     //默認構造器10     public Lenovo(){};11     12     //構造注入帶參數的構造器13     public Lenovo(Key key) {14         this.key = key;15     }16 17     //設值注入所需的setter方法18     public void setKey(Key key) {19         this.key = key;20     }21     22     //實現Computer接口中使用鍵盤的屬性23     public void useKey() {24         System.out.println(key.print());25     }26 27 }

  同樣,配置文件需要做出對應的修改,構造注入需要使用<constructor-arg```>標簽來完成,修改后代碼如下:

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans 3     xmlns="http://www.springframework.org/schema/beans" 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5     xmlns:p="http://www.springframework.org/schema/p" 6     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 7     <!-- 將配置Lenovo實例 --> 8     <bean id="lenovo" class="com.sep.basic.service.impl.Lenovo"> 9         <constructor-arg ref="logicTech"></constructor-arg>10     </bean>11     <!-- 將配置LogicTech實例 -->12     <bean id="logicTech" class="com.sep.basic.service.impl.LogicTech"></bean>13 </beans>

  運行,同樣可以看到語句輸出:“用鍵盤打字”。

  ok,兩種方法的依賴注入我就都實現了,需要消化的東西很多啊,我還得自己琢磨琢磨,話說打這么多字很累啊,要不是最近工作不怎么忙,我估計得打字打到吐血啊!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广州市| 渑池县| 名山县| 分宜县| 洛扎县| 苍南县| 莱西市| 阳新县| 永安市| 淳化县| 小金县| 孟村| 桦甸市| 公主岭市| 醴陵市| 文昌市| 德保县| 孟村| 莲花县| 周至县| 庄河市| 文昌市| 永仁县| 镇雄县| 永嘉县| 全南县| 漳州市| 襄城县| 舟山市| 章丘市| 宁河县| 临泽县| 郁南县| 马尔康县| 永昌县| 博客| 偃师市| 陕西省| 永德县| 剑阁县| 邢台市|