當前位置:網站首頁>依賴注入的實現方法(步驟截圖,完整代碼)

依賴注入的實現方法(步驟截圖,完整代碼)

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. 在包中創建實現類,寫一個實現方法

  1. 在實現方法中調用userDao的say方法
  2. 聲明userDao屬性
  3. 創建userDao的setter()方法
    在這裏插入圖片描述

注意:創建setter()的方法

  1. 右鍵點source
  2. 點Generate Getter and Setters
  3. 選擇setter方法
    在這裏插入圖片描述

3. 在配置文件中創建userService的bean,並將userDao注入到userService中

  1. 在配置文件applicationContext文件中創建userService的bean實例
  2. 在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

隨機推薦