IOC概念和spring中的IOC



明确 ioc 的作用削减计算机程序的耦合(解除我们代码中的依赖关系)。



使用 spring IOC 解决程序耦合

获取spring的Ioc核心容器,并根据id获取对象
* ApplicationContext的三个常用实现类:
*      ClassPathXmlApplicationContext:它可以加载类路径下的配置文件,要求配置文件必须在类路径下。不在的话,加载不了。(更常用)
*      FileSystemXmlApplicationContext:它可以加载磁盘任意路径下的配置文件(必须有访问权限)
*
*      AnnotationConfigApplicationContext:它是用于读取注解创建容器的

* 核心容器的两个接口引发出的问题:
ApplicationContext:     单例对象适用              采用此接口
*      它在构建核心容器时,创建对象采取的策略是采用立即加载的方式。也就是说,只要一读取完配置文件马上就创建配置文件中配置的对象。
*
BeanFactory:            多例对象使用
*      它在构建核心容器时,创建对象采取的策略是采用延迟加载的方式。也就是说,什么时候根据id获取对象了,什么时候才真正的创建对象





Client.java

package com.itheima.ui;import com.itheima.dao.IAccountDao;
import com.itheima.service.IAccountService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** 模拟一个表现层,用于调用业务层*/
public class Client {public static void main(String[] args) {//1.获取核心容器对象ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");//ApplicationContext ac = new FileSystemXmlApplicationContext("C:\\Users\\zhy\\Desktop\\bean.xml");//2.根据id获取Bean对象IAccountService as  = (IAccountService)ac.getBean("accountService");IAccountDao adao = ac.getBean("accountDao",IAccountDao.class);System.out.println(as);System.out.println(adao);
//        as.saveAccount();//--------BeanFactory----------
//        Resource resource = new ClassPathResource("bean.xml");
//        BeanFactory factory = new XmlBeanFactory(resource);
//        IAccountService as  = (IAccountService)factory.getBean("accountService");
//        System.out.println(as);}
}

使用 spring 的 IOC 解决程序耦合——获取spring的Ioc核心容器,并根据id获取对象、核心容器的两个接口(ApplicationContext、BeanFactory)引发出的问题相关推荐

  1. java day57【 Spring 概述 、 IoC 的概念和作用、使用 spring 的 IOC 解决程序耦合 】...

    第1章 Spring 概述 1.1 spring 概述[了解] 1.1.1 spring 是什么 1.1.2 Spring 的发展历程 1.1.3 spring 的优势 1.1.4 spring 的体 ...

  2. 万字长文带你吃透Spring是怎样解决循环依赖的

    在Spring框架中,处理循环依赖一直是一个备受关注的话题.这是因为Spring源代码中为了解决循环依赖问题,进行了大量的处理和优化.同时,循环依赖也是Spring高级面试中的必考问题,回答得好可以成 ...

  3. Spring底层控制反转解耦合(IOC)

    简单的例子解释IOC控制反转进行解耦合 一.相关概念 (1)解耦合 解耦合就是把程序中互相不相关或有限相关的模块分割开来,把不同模块互相之间的关系用接口进行准确定义,解耦前,两个模块之间共享所有信息: ...

  4. spring根据名称获取bean_带你从零开始手写 spring ioc 框架,深入学习 spring 源码

    IoC Ioc 是一款 spring ioc 核心功能简化实现版本,便于学习和理解原理. 创作目的 使用 spring 很长时间,对于 spring 使用非常频繁,实际上对于源码一直没有静下心来学习过 ...

  5. Spring IOC 容器源码分析 - 获取单例 bean

    1. 简介 为了写 Spring IOC 容器源码分析系列的文章,我特地写了一篇 Spring IOC 容器的导读文章.在导读一文中,我介绍了 Spring 的一些特性以及阅读 Spring 源码的一 ...

  6. 获取Spring IOC容器对象:

    一.原始Spring方式: (1). BeanFactory: (1).配置资源文件件名为applicationContext.xml (2).引用约束声明 (3).通过配置告诉Spring的Ioc容 ...

  7. Spring框架(JavaEE开发进阶Ⅲ)—基础和IoC

    一.Spring简介 1.Spring的诞生 1.1.原因 日益复杂的Java企业应用开发 1.2.EJB之殇 JavaSE1.3引入了动态代理,使EJB采用的容器代码生成机制过时 当时AOP编程获得 ...

  8. springboot项目中的注解 启动项目的方式 解决spring的bean.xml配置不生效 spring的基础JDBC配置

    依赖 创建一个 Spring Boot 工程时,可以继承自一个 spring-boot-starter-parent ,也可以不继承 先来看 parent 的基本功能有哪些? 定义了 Java 编译版 ...

  9. 框架源码专题:Spring是如何解决循环依赖的?

    文章目录 1.什么是循环依赖? 2.解决循环依赖思路 3. 使用了三级缓存还有什么问题?怎么解决的? 4. 手写伪代码解决缓存依赖 5. 二级缓存能否解决循环依赖,三级缓存存在的意义 6. Sprin ...

最新文章

  1. 案例:Oracle dul数据挖掘 磁盘损坏dul提取数据文件中表的数据及l
  2. 基于面向服务体系架构(SOA)和面向资源体系架构(ROA)的业务组件模型
  3. Linux怎么确定信号来源,Linux信号来源和捕获处理以及signal函数简介
  4. 【BZOJ 3229】 3229: [Sdoi2008]石子合并 (GarsiaWachs算法)
  5. 分布式架构中数据一致性常见的几个问题
  6. 整合TextBox与Label 创建新控件--EFLabelText
  7. mysql 忘记root密码的解决办法
  8. mysql多条件模糊查询语句_实现多条件模糊查询SQL语句
  9. uva 10105 Polynomial coefficients
  10. 有哪些好的编程习惯从一开始就值得坚持?
  11. 大班运用计算机教学案例,【大班教学案例】_幼儿园大班教学案例:《让孩子在自主探索中获取成功》...
  12. springboot切面AOP拦截父类或接口中标记注解的方法
  13. FTP自动上传/下载对应目下多个人间
  14. 阿piu传-文档批量上传客户端豆丁版使用帮助
  15. vue项目中videoPlayer 的 src 视频地址参数动态修改---方法
  16. 嵌入式Linux开发17——LED驱动开发
  17. Django整合微信h5支付
  18. 存储采购防PUA指南系列(一):为什么您不需要 1万转机械硬盘
  19. [Android][sensor]确认sensor唤醒源:查看某一时刻\某个场景下,某个sensor被哪个上层apk调用
  20. 用过留痕,谁动了我的档案?

热门文章

  1. 小程序页面遮罩且不能滚动 + 内容居中显示
  2. 个人学习进度(第十三周)
  3. Dollar Dayz poj3181
  4. 设计模式学习 - 工厂模式
  5. [其实有加强版的]校门外的树
  6. 理解 __doPostBack(转)
  7. Androidz之Activity概要学习
  8. unet图片数据增强_numpy实现深度学习遥感图像语义分割数据增强(支持多波段)
  9. flutter实现(OutlineButton)线框按钮
  10. maven上传本地仓库