當前位置:網站首頁>依賴注入的實現方法(步驟截圖,完整代碼)
依賴注入的實現方法(步驟截圖,完整代碼)
2022-01-27 20:08:52 【王胖子嚶】
JAVAEE實踐代碼
1. [Spring入門程序](https://blog.csdn.net/qq_48457459/article/details/121997678?spm=1001.2014.3001.5501)2. 依賴注入實現方法
依賴注入的實現方法
前言
依賴注入的作用是:使用spring框架創建對象時,動態地將其所依賴的對象注入到Bean組件中。實現方式有兩種:①屬性setter方法注入②構造方法注入
這裏用第一種方法(屬性setter方法注入)實現依賴注入
一、步驟截圖
說明:這個實例中用到的userDao的接口,實現類以及配置文件都在本系列中Spring入門程序裏面
1. 在包中創建接口,寫一個方法
2. 在包中創建實現類,寫一個實現方法
- 在實現方法中調用userDao的say方法
- 聲明userDao屬性
- 創建userDao的setter()方法
注意:創建setter()的方法
- 右鍵點source
- 點Generate Getter and Setters
- 選擇setter方法
3. 在配置文件中創建userService的bean,並將userDao注入到userService中
- 在配置文件applicationContext文件中創建userService的bean實例
- 在userService實例中添加property,將userDao注入
4. 在包中創建測試類
二、輸出結果
三、整體代碼
1. 接口類:UserService.java
代碼如下:
package com.itheima.ioc;
public interface UserService {
public void say();
}
2. 實現類:UserServiceImpl.java
代碼如下:
package com.itheima.ioc;
public class UserServiceImpl implements UserService {
//聲明userDao屬性
//這時userDao是空的,必須在bean中將它注入
//要想在bean中找到需要注入的內容,必須給該內容寫一個setter方法
private UserDao userDao;
//也就是給userDao屬性添加setter方法,用於實現依賴注入
//添加setter的方法:
//右鍵點source,然後點generate getter and setters,只添加setter就行
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
//實現UserService接口裏的方法
public void say() {
//調用userDao裏的say方法
userDao.say();
System.out.println("userService say hello World!");
}
}
3. 配置文件: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-4.3.xsd">
<!-- calss是實現類的類路徑:copy qualified name(在impl文件裏右鍵名字)-->
<!-- 將指定類配置給spring,讓spring創建其對象的實例(告訴spring:接口類名,實現類名) -->
<bean id="userDao" class="com.itheima.ioc.UserDaoImpl"></bean>
<!-- 添加userService的實例 -->
<bean id="userService" class="com.itheima.ioc.UserServiceImpl">
<!-- 將userDao的實例注入到userService實例中:用property -->
<!-- name是屬性名(和實現類中創建的屬性名一致) -->
<!-- ref是屬性值(引用了id為userDao的bean實例進行注入) -->
<property name="userDao" ref="userDao"></property>
</bean>
</beans>
4. 測試類:TestDI.java
代碼如下:
package com.itheima.ioc;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestDI {
public static void main(String[] args) {
//初始化spring容器,加載配置文件
//src開始的配置文件的類路徑
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//通過容器獲取userService實例
UserService userService = (UserService) applicationContext.getBean("userService");
//調用userService的say方法
userService.say();
}
}
總結
本文是依賴注入的代碼實例,用到了屬性setter方法注入注意:
1. 本例子是將userDao注入到userService中
2. 所以要給userDao創建一個setter方法
3. 在配置文件中創建userService的bean實例,在其中添加property將userDao注入,其中name是屬性名(在實現類中創建屬性的名字),ref是屬性值(是配置文件中userDao的bean實例的id名)
版權聲明
本文為[王胖子嚶]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201272008518337.html
邊欄推薦
猜你喜歡
隨機推薦
- MySQL-5.7.36安裝遇到坑之後的整理,刻入骨髓的1045
- leader epoch
- Wireshark實驗四:UDP
- UiPath的許可查詢、激活、遷移和導出
- 遞歸以及for循環裏async 和 await 的用法
- 大人重疾險想保終身重疾,買哪個產品最合適啊?
- php使用openssl_encrypt和openssl_decrypt進行AES加密解密
- CV in Transformer學習筆記(持續更新)
- ctf,show msic入門
- 網絡文件系統
- 《滲透測試具體流程》
- flask入門教程(7) - 會話
- 【電子技術】什麼是循環冗餘碼CRC
- Anconda 學習
- 基於kubernetes的Prometheus監控mysql
- 什麼是光纖隔離器?
- LeetCode 7.整數反轉
- C 練習實例90
- @Inherit注解與注解的繼承
- 小程序雲開發——雲數據庫的增删查改(2)
- 五、OpenGL ES 三維圖形的初探
- 登錄令牌JWT — JSON WEB TOKEN
- 兩種方法,word文件轉換成PDF文件
- 有符號數(signed) 和 無符號數(unsigned)
- 道與術
- 少兒消費型重疾目前那個比較好一點?有沒有推薦的產品
- 猪器官又立功了!移植轉基因猪腎給腦死亡病人,23分鐘後成功產生尿液
- [機器學習算法面試題] 一.准確率Accuracy的局限性
- Flink(50):Flink之綜合練習(二)
- String類常用方法示例
- 各大直播平臺主播的收入計算方式是怎樣的?
- 工程師必須知道的幾個原則
- 細品事務機制(一)
- 邏輯樹分析方法:如何將複雜問題變簡單?
- 數組和鏈錶插入效率比較
- 李宏毅《機器學習》| 神經網絡訓練不起來怎麼辦(下)
- 2021年P氣瓶充裝考試及P氣瓶充裝試題及解析
- 2021年G2電站鍋爐司爐考試題庫及G2電站鍋爐司爐考試試卷
- jangow靶機滲透
- 『淺入淺出』MySQL 和 InnoDB