IOC案例

  1. 创建BookDao接口、BookDaoImpl类和BookService接口、BookServiceImpl类

1.BookDao

package dao;public interface BookDao {public void save();
}

2.BookDaoImpl类

package dao;public class BookDaoImpl implements BookDao{public void save(){System.out.println("book dao save ...");}
}

3.BookService接口

package impl;public interface BookService {public void save();
}

4.BookServiceImpl类

package impl;import dao.BookDao;
import dao.BookDaoImpl;public class BookServiceImpl implements BookService{//5.删除业务层中使用new方式创建的对象private BookDao bookDao=new BookDaoImpl();public void save(){System.out.println("book service save...");bookDao.save();}//6.提供set方法public void setBookDao(BookDao bookDao) {this.bookDao = bookDao;}
}
  1. 添加spring依赖jar包

pom.xml插入一下代码

<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.10.RELEASE</version></dependency></dependencies>
  1. 添加配置文件
    resources 下添加 spring 配置文件 applicationContext.xml
  2. 在配置文件中文成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"><!--1.导入spring的坐标spring-context 对应的版本是5.2.10.RELEASE--><!--2.配置bean--><!--bean标签表示配置bean   id属性表示给bean起名字    class属性表示的bean定义类型--><bean id="bookDao" class="dao.BookDaoImpl"/><bean id="bookService" class="impl.BookServiceImpl"/></beans>

bean定义id属性在同一个配置文件中不能重复。

  1. 获取IOC容器
    使用Spring提供的接口完成IOC容器的创建,创建App类,编写main方法
public class App {public static void main(String[] args) {//获取Ioc容器ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");}
}
  1. 从容器中获取对象进行方法调用
public class App {public static void main(String[] args) {//获取Ioc容器ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");//4.获取beanBookDao bookDao= (BookDao) ctx.getBean("bookDao");bookDao.save();BookService bookService= (BookService) ctx.getBean("bookService");bookService.save();}
}
  1. 运行结果

DI案例

  1. 在BookServiceImpl类中,删除业务层中使用new的方式创建的dao对象并提供set方法
public class BookServiceImpl implements BookService{//5.删除业务层中使用new方式创建的对象private BookDao bookDao;//=new BookDaoImpl();public void save(){System.out.println("book service save...");bookDao.save();}//6.提供set方法public void setBookDao(BookDao bookDao) {this.bookDao = bookDao;}
}
  1. 修改配置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.xsd"><!--1.导入spring的坐标spring-context 对应的版本是5.2.10.RELEASE--><!--2.配置bean--><!--bean标签表示配置bean   id属性表示给bean起名字    class属性表示的bean定义类型--><bean id="bookDao" class="dao.BookDaoImpl"/><bean id="bookService" class="impl.BookServiceImpl"><!-- 7.配置server与dao的关系--><!--    property 标签表示配置当前bean属性--><!--    name属性表示配置哪一个具体的属性--><!--    ref属性表示参照哪一个bean--><property name="bookDao" ref="bookDao" /></bean></beans>

配置中的两个bookDao的含义不一样

  • name="bookDao"中的bookDao的作用是让Spring的IOC容器在获取到名称后,将首字母大写,前面加set找对应的setBookDao()方法进行对象注入。
  • ref="bookDao"中的bookDao的作用是让Spring能在IOC容器中找到id为bookDao的Bean对象给bookService进行注入。
  1. 运行结果

IOC和DI入门案例相关推荐

  1. Spring IOC与DI、反射的理解 含小案例说明

    阅览了很多篇博文,对于Spring IOC和DI看到很多人介绍的感觉都很含糊,读完之后还是觉得混淆的不行,也有的人认为DI是IOC的另一种说法-emm,可能个人理解不同吧,我的观点并不然.但这种东西, ...

  2. spring入门第一天之IOC与DI

    我们首先要学习的就是 Spring Framework , Spring Framework是Spring生态圈中最基础的项目,是其他项目的根基 spring核心概念: IOC  控制反转,对象的创建 ...

  3. Spring-Security 简介、入门案例详解、安全框架、权限验证 SSM项目 使用 JavaConfig配置

    Spring-Security 简介 一.介绍 二.详细步骤 1.创建一个maven项目 添加web 框架. 2.导入依赖 3.项目整体结构 4.Spring 容器配置 5.servletContex ...

  4. Spring-学习笔记03【Spring的IOC和DI】

    Java后端 学习路线 笔记汇总表[黑马程序员] Spring-学习笔记01[Spring框架简介][day01] Spring-学习笔记02[程序间耦合] Spring-学习笔记03[Spring的 ...

  5. Spring IOC和DI

    Spring  IOC和DI 框架:  将一些公用的模块进行集成,通过框架的形式进行管理(事务控制,权限控制(Shiro),日志收集log) Spring框架  SSH: Struts2(配置重型)+ ...

  6. 深入理解DIP、IoC、DI以及IoC容器

    对于大部分小菜来说,当听到大牛们高谈DIP.IoC.DI以及IoC容器等名词时,有没有瞬间石化的感觉?其实,这些"高大上"的名词,理解起来也并不是那么的难,关键在于入门.只要我们入 ...

  7. Spring 框架 IOC 与 DI 的总结

    一:Spring并天下 1:Spring帝国: ①:Spring崛起 什么是Spring:源于Rod Johnson在其著作<Expert one on one J2EE design and ...

  8. Spring-02 IOC与DI

    文章目录 核心容器 两种容器 Bean标签的id 和name属性 从容器中获取对象的方式 IOC / DI IOC 控制反转 DI 依赖注入 iOC和 DI .DL的关系 依赖注入方式 set 方法赋 ...

  9. Java开发为何深入人心 ?我来带你解开 Spring、IoC、DI 的秘密~

    目录 一.什么是Spring? 1.1.什么是容器? 1.2.IoC是什么? 1.3.IoC带来了什么好处? 二.什么是DI? 2.1.IoC和DI有什么关系? 一.什么是Spring? 一句概括,S ...

最新文章

  1. JS类型判断、对象克隆、数组克隆
  2. java中queue排序_Java中常见的排序算法有哪些?---选择排序
  3. python的所有数据类型都可以相互转化吗_Python中如何进行数据类型转换?
  4. Android 监听 WiFi 开关状态
  5. onenote复制出来是图片_你真的了解 OneNote 吗?
  6. 鸟哥私房菜(基础篇第三版)笔记
  7. gps测速仪手机版下载_银豹收银系统手机版下载-银豹收银系统手机安卓版APP下载v2.0.1.2...
  8. mysql查询语句块_mysql查询语句
  9. 如何免费下载IEEE的论文
  10. 博主力推!!NRF52832 BLE 抓包sniffer来了!附带安装使用说明
  11. apk双开多开分身术的原理
  12. 【2020年面经】【通用篇】拿了阿里、滴滴、shopee几家公司offer后的经验总结
  13. mac 卸载php版本,mac 系统下删除旧的php版本安装最新的php版本及Xdebug
  14. 一个可以截取其他App素材的办法Visual Studio Code
  15. Python使用selenium自动打开谷歌浏览器和网页
  16. 一分钟解决“仅限中国大陆地区播放” (转)
  17. Inwook,Kong
  18. 阿里巴巴Java成神之路-笔记(8)动态代理
  19. ZUCC_计算机网络实验_实验04 VLAN配置
  20. 安天利信IPO被终止:因不符合发行条件 年营收2.29亿

热门文章

  1. 【转载】我眼中的信贷管理系统的前世今生
  2. 4键电子手表说明书_迪士尼手表如何调整
  3. 【发表案例】计算机科学,电信学、移动信息系统类SCI,仅29天录用
  4. iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  5. 读书笔记-确定Icepak模型多级网格的级数
  6. margin collapsing 解决
  7. 河北青年管理干部学院 计算机单招,河北青年管理干部学院2017单招简章[录取规则]...
  8. Android Studio 真机调试vivo系列手机安装失败处理
  9. 解决Logitech G HUB一直在加载问题
  10. 现表情包大幅流行,今天教你们开发个人表情包网站