ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-06-10 16:08:16  阅读:168  来源: 互联网

标签:Web Java DI Spring void UserDao say userDao public


文章目录

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 代码目录

在这里插入图片描述

标签:Web,Java,DI,Spring,void,UserDao,say,userDao,public
来源: https://blog.51cto.com/u_14013325/2889918

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有