Spring中IoC/DI实现注入

 链接:https://pan.baidu.com/s/1QvDJ-eVTk0uTuzDlojtn7A?pwd=ecfv
提取码:ecfv

先导入项目,成功运行,再学习!

1.创建一个动态web项目,并且把四个基础包和一个拓展包复制到lib目录下。

 2.在src目录下创建ioc_di包,创建接口UserDao,在接口中定义一个login()方法。

package ioc_di;

public interface UserDao {
public void login();
}

3.在ioc_di包下创建类UserDaoImpl实现UserDao中的login()方法,并输出语句。

package ioc_di;

public class UserDaoImpl implements UserDao{

	@Override
	public void login() {
		// TODO Auto-generated method stub
		System.out.println("登陆成功!!!");
	}

}

4.在src目录下创建Spring的配置文件applicationContext.xml。并在配置文件中创建一个id为userDao的Bean。

<?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.xsd">
   <bean id="userDao" class="ioc_di.UserDaoImpl"></bean>

   </beans>

5.在ioc_di包下创建测试类IoC,并在类中编写main()方法及实现IoC的代码

package ioc_di;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class IoC {
public static void main(String[] args) {
	//1.初始化Spring容器,加载配置文件
	ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
	//2.通过容器获取userDao实例
	UserDao userDao= (UserDao) applicationContext.getBean("userDao");
	//3.调用示例中的login()方法
	userDao.login();
}
}

 该程序执行后可以看到

 从中可以看出,控制台成功输出了 UserDaolmpl类中的输出语句。在main()方法中,并没有通过 new 关键字来创建 UserDao 接口的买现类对象,而是通过 Spring 容器来获取的实现对象,这就是 Spring IoC(控制反转)的工作机制。

6.在ioc_di包中创建接口UserService,并编写DoTest()方法

package ioc_di;

public interface UserService {
public void DoTest() ;

}

7.在ioc_di包下创建类UserSerServiceImpl实现UserService接口,在类中声明userDao属性,并添加属性的setter()方法,同时编写DoTest()方法。

package ioc_di;

public class UserServiceImpl implements UserService{
private UserDao userDao;
public void setUserDao(UserDao userDao) {
	this.userDao=userDao;
}
	@Override
	public void DoTest() {
		// TODO Auto-generated method stub
		this.userDao.login();
		System.out.println("测试成功!!!");
	}

}

8.在配置文件中创建id为userService的Bean,该Bean用于实例化UserServiceImpl类的信息,并将name为userDao的实例注入userService中。

<?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.xsd">
   <bean id="userDao" class="ioc_di.UserDaoImpl"></bean>

   <bean id="userService" class="ioc_di.UserServiceImpl">
   <property name="userDao" ref="userDao"></property>
   </bean>
   </beans>

 在上述代码中,<property>是<bean>元素的子元素,用于调用 Bean 实例中的 setUserDao()方法完成属性赋值,从而实现依赖注入。其name 属性表示 Bean 实例中的相应属性名,ref 属性用于定其属性值。

9.在ioc_di包中创建测试类DI

package ioc_di;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class DI {
public static void main(String[] args) {
	//1.初始化Spring容器,加载配置文件
	ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
	//2.通过容器获取userService实例
	UserService userService=(UserService) applicationContext.getBean("userService");
	//3.通过实例调用DoTest()方法
	userService.DoTest();

}
}

 从中可以看出,使用 Spring 容器通过 UserService 实现类中的 DoTest()方法调了 UserDao 实现类中的 login()方法,实现类中的 DoTest()方法,并输出了结果。这就是 Spring 容器属性 setter 注入的方式,也是实际开发中常用的一种方式。
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无忧#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值