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名)