使用 spring 的 IOC 解决程序耦合——获取spring的Ioc核心容器,并根据id获取对象、核心容器的两个接口(ApplicationContext、BeanFactory)引发出的问题
IOC概念和spring中的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)引发出的问题相关推荐
- 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 的体 ...
- 万字长文带你吃透Spring是怎样解决循环依赖的
在Spring框架中,处理循环依赖一直是一个备受关注的话题.这是因为Spring源代码中为了解决循环依赖问题,进行了大量的处理和优化.同时,循环依赖也是Spring高级面试中的必考问题,回答得好可以成 ...
- Spring底层控制反转解耦合(IOC)
简单的例子解释IOC控制反转进行解耦合 一.相关概念 (1)解耦合 解耦合就是把程序中互相不相关或有限相关的模块分割开来,把不同模块互相之间的关系用接口进行准确定义,解耦前,两个模块之间共享所有信息: ...
- spring根据名称获取bean_带你从零开始手写 spring ioc 框架,深入学习 spring 源码
IoC Ioc 是一款 spring ioc 核心功能简化实现版本,便于学习和理解原理. 创作目的 使用 spring 很长时间,对于 spring 使用非常频繁,实际上对于源码一直没有静下心来学习过 ...
- Spring IOC 容器源码分析 - 获取单例 bean
1. 简介 为了写 Spring IOC 容器源码分析系列的文章,我特地写了一篇 Spring IOC 容器的导读文章.在导读一文中,我介绍了 Spring 的一些特性以及阅读 Spring 源码的一 ...
- 获取Spring IOC容器对象:
一.原始Spring方式: (1). BeanFactory: (1).配置资源文件件名为applicationContext.xml (2).引用约束声明 (3).通过配置告诉Spring的Ioc容 ...
- Spring框架(JavaEE开发进阶Ⅲ)—基础和IoC
一.Spring简介 1.Spring的诞生 1.1.原因 日益复杂的Java企业应用开发 1.2.EJB之殇 JavaSE1.3引入了动态代理,使EJB采用的容器代码生成机制过时 当时AOP编程获得 ...
- springboot项目中的注解 启动项目的方式 解决spring的bean.xml配置不生效 spring的基础JDBC配置
依赖 创建一个 Spring Boot 工程时,可以继承自一个 spring-boot-starter-parent ,也可以不继承 先来看 parent 的基本功能有哪些? 定义了 Java 编译版 ...
- 框架源码专题:Spring是如何解决循环依赖的?
文章目录 1.什么是循环依赖? 2.解决循环依赖思路 3. 使用了三级缓存还有什么问题?怎么解决的? 4. 手写伪代码解决缓存依赖 5. 二级缓存能否解决循环依赖,三级缓存存在的意义 6. Sprin ...
最新文章
- 案例:Oracle dul数据挖掘 磁盘损坏dul提取数据文件中表的数据及l
- 基于面向服务体系架构(SOA)和面向资源体系架构(ROA)的业务组件模型
- Linux怎么确定信号来源,Linux信号来源和捕获处理以及signal函数简介
- 【BZOJ 3229】 3229: [Sdoi2008]石子合并 (GarsiaWachs算法)
- 分布式架构中数据一致性常见的几个问题
- 整合TextBox与Label 创建新控件--EFLabelText
- mysql 忘记root密码的解决办法
- mysql多条件模糊查询语句_实现多条件模糊查询SQL语句
- uva 10105 Polynomial coefficients
- 有哪些好的编程习惯从一开始就值得坚持?
- 大班运用计算机教学案例,【大班教学案例】_幼儿园大班教学案例:《让孩子在自主探索中获取成功》...
- springboot切面AOP拦截父类或接口中标记注解的方法
- FTP自动上传/下载对应目下多个人间
- 阿piu传-文档批量上传客户端豆丁版使用帮助
- vue项目中videoPlayer 的 src 视频地址参数动态修改---方法
- 嵌入式Linux开发17——LED驱动开发
- Django整合微信h5支付
- 存储采购防PUA指南系列(一):为什么您不需要 1万转机械硬盘
- [Android][sensor]确认sensor唤醒源:查看某一时刻\某个场景下,某个sensor被哪个上层apk调用
- 用过留痕,谁动了我的档案?