【Java Web开发指南】解析Spring中Ioc和DI(入门Demo)

本文详细介绍了Spring框架的基本概念及其核心特性IoC(控制反转)与DI(依赖注入)。通过具体代码示例展示了如何利用Spring配置文件来声明对象及实现依赖注入,帮助读者深入理解Spring的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 Spring概述

一种Java应用开发框架,而SpringMVC是针对Web的框架。
在这里插入图片描述

2 Spring的体系结构

在这里插入图片描述
在Spring框架的lib文件夹中,分别有四个基础包,分别对应上图中Spring核心容器(Core Container)中的四个模块。
在这里插入图片描述

在这里插入图片描述

3 Ioc代码实现

依赖翻转指:这里我们不使用new创建一个实例对象,而是依赖于Spring配置文件声明一个对象。

package top.lixiang007.ioc;
public interface UserDao {
	public void say();
}
package top.lixiang007.ioc;
public class UserDaoImpl implements UserDao {
	public void say() {
		System.out.println("userDao say hello World to LiXiang!");
	}
}

<?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"> 
	<!-- 将指定类配置给Spring,让Spring创建其对象的实例 -->
	<bean id="userDao" class="top.lixiang007.ioc.UserDaoImpl" />


<bean id="userService" class="top.lixiang007.ioc.UserServiceImpl" >
	<property name="userDao" ref="userDao"></property>
</bean>


</beans>

package top.lixiang007.ioc;


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

public class TestIoc {

    @Test
    public void test(){
        ApplicationContext applicationContext =
                new ClassPathXmlApplicationContext("applicationContext.xml");
        //2.通过容器获取userDao实例
        UserDao userDao = (UserDao) applicationContext.getBean("userDao");
        //3.调用实例中的say()方法
        userDao.say();
    }
}

4 DI代码实现

依赖注入的概念这里给出最通俗的理解:依赖注入让bean与bean之间以配置文件组织在一起,而不是以硬编码的方式耦合在一起。

这里我们采用set方法而不采用构造函数方法实现DI。

package top.lixiang007.ioc;
public interface UserService {
	public void say();
}

package top.lixiang007.ioc;
public class UserServiceImpl implements UserService {
	// 声明UserDao属性
	private UserDao userDao;
	// 添加UserDao属性的setter方法,用于实现依赖注入
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	// 实现的接口中方法
	public void say() {
		//调用userDao中的say()方法,并执行输出语句
		this.userDao.say();
		System.out.println("userService say hello World ");
	}
}

<?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"> 
	<!-- 将指定类配置给Spring,让Spring创建其对象的实例 -->
	<bean id="userDao" class="top.lixiang007.ioc.UserDaoImpl" />


<bean id="userService" class="top.lixiang007.ioc.UserServiceImpl" >
	<property name="userDao" ref="userDao"></property>
</bean>


</beans>

package top.lixiang007.ioc;


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

public class TestIoc {

    @Test
    public void test(){
        ApplicationContext applicationContext =
                new ClassPathXmlApplicationContext("applicationContext.xml");
        //2.通过容器获取userDao实例
        UserDao userDao = (UserDao) applicationContext.getBean("userDao");
        //3.调用实例中的say()方法
        userDao.say();
    }
}

5 代码目录

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

理想不闪火

你的鼓励将是我最大的动力!

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

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

打赏作者

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

抵扣说明:

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

余额充值