文章目录

  • IoC控制反转
  • Demo Spring开发步骤(入门)
    • 1.导入spring的坐标spring-context(pom.xml)
    • 2.配置bean(applicationContext.xml)
    • 3.拿IoC容器,拿bean,运行程序(App2.java)

IoC控制反转

使用对象时,由主动new产生对象转换为由外部提供对象,对象创建控制权由程序转移到外部。

一开始是这样的:

后来变成了:

dao对象不用自己new
使用对象时不仅可以直接从IoC容器中获取,并且获取到的bean已经绑定了所有的依赖关系。

Demo Spring开发步骤(入门)

1.导入spring的坐标spring-context(pom.xml)

     <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.10.RELEASE</version></dependency>

2.配置bean(applicationContext.xml)

原本我们是这样配的

<!--配置bean--><!--bean标签表示配置beanid属性表示给bean起名字class属性表示给bean定义类型--><bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/><bean id="bookService" class="com.com.itheima.service.impl.BookServiceImpl"/>

对应的业务层实现

private BookDao bookDao = new BookDaoImpl();

现在service层实现类BookServiceImpl已经与之前不同了,如下:

package com.itheima.service.impl;import com.itheima.dao.BookDao;
import com.itheima.service.BookService;public class BookServiceImpl implements BookService {//private BookDao bookDao = new BookDaoImpl();//删除业务层中使用new的方式创建的dao对象//Service中需要的Dao对象如何进入到Service中?生成一个set方法,由IoC容器执行private BookDao bookDao;public void save() {System.out.println("book service save .....");bookDao.save();}//提供对应的set方法public void setBookDao(BookDao bookDao) {this.bookDao = bookDao;}
}

注意:
1.Dao对象由IoC容器创建
2.生成一个setter方法,把Dao对象给Service

那么问题来了,Service与Dao之间的关系如何描述?Spring如何知道?
通过配置。
需要将原来的bean配置稍作修改

 <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/><!--<bean id="bookService" class="com.com.itheima.service.impl.BookServiceImpl"/>--><bean id="bookService" class="com.itheima.service.impl.BookServiceImpl" scope="prototype"><!--配置service与dao的关系--><!--property标签表示配置当前bean的属性name属性表示配置哪一个具体属性(BookServiceImpl.java)属性的名称ref属性表示参照哪一个bean(applicationContext.xml) 容器中对应的bean的名称--><property name="bookDao" ref="bookDao"/></bean>

3.拿IoC容器,拿bean,运行程序(App2.java)

package com.itheima;import com.itheima.dao.BookDao;
import com.itheima.service.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App2 {public static void main(String[] args) {//想拿bean,得先拿IoC容器,加载配置文件ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");//获取bean
//        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
//        bookDao.save();BookService bookService = (BookService) ctx.getBean("bookService");//BookService bookService = (BookService) ctx.getBean(BookService.class);bookService.save();}
}

Spring-IoCDI相关推荐

  1. 【Spring IOCDI】知识点详细介绍

    文章目录 Spring 简介 Spring Framework 系统架构 IOC & DI 简介 通过IOC容器创建对象,并为属性赋值 根据bean的类型从IOC容器中获取bean的实例 通过 ...

  2. 1.IocDI和Spring

    1.面向对象回顾和案例 面向对象程序设计:1 2 3 4 案例分析: 需求分析: 报表功能:      报表服务类,检索数据,并生成图标      报表生成器类,生成不同格式的报表文件,例如PDF格式 ...

  3. Spring框架学习笔记(2)——IOCDI

    IOC:控制反转,创建对象的权利交给Spring,Spring会自动创建对象. DI:依赖注入,操作的对象靠Spring注入,如果不使用Spring,对象的属性值是要靠setter方法来添加的,使用S ...

  4. spring项目概念-IOCDI

    IOC和DI,IOC和DI这两个概念,这两个概念其实特别的简单,可以说打我们学JAVA以来,最简单的思想了,IOC这三个字母,全写是Inverse Of Control,翻译过来就是,反转控制,IOC ...

  5. Spring框架(IOCDI)xXML形式和注解形式

    IOC Spring的依赖包 pom.xml <dependency><groupId>org.springframework</groupId><artif ...

  6. Spring入门图解(体系结构-IOC-DI-AOP)

    0. 什么是Spring? 一句话:Spring是一个轻量级的控制反转(IoC-Inversion of Control)和面向切面(AOP-Aspect Oriented Programming)的 ...

  7. spring中AOP(面向切面编程)

    spring中AOP(面向切面编程) 面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一个热点,也是spring框架中的一个重要内容 ...

  8. spring boot项目 中止运行 最常用的几种方法

    spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...

  9. html+spring boot简单的ajax数据传输实现

    本篇讲解在前后端不分离情况下的html+spring boot的项目数据传输实现 首先,后台我写了三个接口 package com.demo.ajax.controller;import com.de ...

  10. Spring Boot整合Spring Data JPA操作数据

    一. Sping Data JPA 简介 Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套 JPA 应用框架,底层使用了 Hibernate 的 J ...

最新文章

  1. 大数加法【HDU 1002】
  2. wiki-editor语法
  3. Bootatrap中的表单(2)
  4. python3 xpath_「手把手教python3接口自动化」:非结构化数据提取(二)
  5. 论文阅读之ALBERT
  6. SqlCommandBuilder自动创建dataAdapter数据库操作命令
  7. oralce数据库创建同义词
  8. 微信小程序云开发教程-一个js文件如何包含多个云函数
  9. linux tar 绝对路径,tar打包使用绝对路径详解
  10. solidworks图纸模板添加_如何建立符合国标的SolidWorks工程图模板
  11. 矩阵的内积和外积,三向量混合积
  12. 余吉磊——湖南高尔夫旅游职业学院游戏爱好者
  13. vue + element-ui本地下载图片
  14. 什么是OEM ODM JDM OQM OBM?
  15. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java小微企业ERP软件物料需求模块设计55ss9
  16. 往事如烟 - 辉哥的财务自由
  17. 2021年广东省安全员B证第三批(项目负责人)新版试题及广东省安全员B证第三批(项目负责人)作业模拟考试
  18. Atitit.团队文化建设------影响组织的的一些原理 法则 定理 效应 p826.v4
  19. (二十七)投资组合的绩效评估
  20. 计算机十二种常用密码破解法

热门文章

  1. WP Engine开发人员工具的好处
  2. Java 下载Excel打不开是什么鬼
  3. 大神详细的ACM训练计划
  4. 魔方还原代码 python_如何用C语言还原三阶魔方?
  5. jquery fadein css同时用,如何同时运行jQuery fadeIn()和slideDown()?
  6. python身份证号码校验
  7. mac上传文件到ftp服务器,mac上传文件到ftp服务器
  8. 【论文简述及翻译】RAFT: Recurrent All-Pairs Field Transforms for Optical Flow(ECCV 2020)
  9. 微信Android热补丁实践演进之路-andFix / ClassLoader / Tinker
  10. 计算机开启后显示器黑屏,电脑打开后显示器黑屏怎么办