依赖注入的实现方法(步骤截图,完整代码)

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名)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值