Spring IoC底层原理
-------------------siwuxie095
Spring IoC 底层原理
1、IoC 即 Inversion of Control,控制反转,把对象的创建
交给 Spring 进行管理
2、IoC 容器管理 Bean 的方式:
(1)基于配置文件的方式
(2)基于注解的方式
3、IoC 底层原理所使用的技术:
(1)XML 配置文件
(2)dom4j 解析 XML
(3)工厂模式
(5)反射
4、原始方案,耦合度太高

|
public class UserService{ public } public class UserServlet{ UserService userService=new UserService();
userService.add(); } |
5、使用工厂模式解耦合,但
Servlet 和工厂类又有了新的耦合,
所以它并不是最终的解决方案

|
public class UserService{ public } public class UserServlet{ UserService userService=UserFactory.getService();
userService.add(); } public class UserFactory{ public static UserService getService(){ return new UserService(); } } |
6、使用 Spring IoC 解耦合,目前较优的解决方案

|
第一步:创建 XML 配置文件,配置要创建对象的类 <bean id="userService"
第二步:创建工厂类,使用 dom4j 解析 XML 配置文件+反射
public class UserFactory{
public static UserService getService(){
// 1、使用 dom4j 解析 XML 配置文件: // 根据 id 属性值得到 class 属性值 String classValue="class 属性值";
// 2、使用反射创建类对象 Class clazz=Class.forName(classValue);
UserService userService=clazz.newInstance();
return userService;
}
} |
【made by siwuxie095】
Spring IoC底层原理的更多相关文章
- Spring_day01--课程安排_Spring概念_IOC操作&IOC底层原理&入门案例_配置文件没有提示问题
Spring_day01 Spring课程安排 今天内容介绍 Spring概念 Spring的ioc操作 IOC底层原理 IOC入门案例 配置文件没有提示问题 Spring的bean管理(xml方式) ...
- spring ioc aop 原理
spring ioc aop 原理 spring ioc aop 的原理 spring的IoC容器是spring的核心,spring AOP是spring框架的重要组成部分. 在传统的程序设计中,当调 ...
- Spring Aop底层原理详解
Spring Aop底层原理详解(来源于csdn:https://blog.csdn.net/baomw)
- 拜托!面试请不要再问我Spring Cloud底层原理[z]
[z]https://juejin.im/post/5be13b83f265da6116393fc7 拜托!面试请不要再问我Spring Cloud底层原理 欢迎关注微信公众号:石杉的架构笔记(id: ...
- spring AOP底层原理实现——jdk动态代理
spring AOP底层原理实现——jdk动态代理
- Spring AOP底层原理
------------------siwuxie095 Spring AOP 底层原理 AOP 即 Aspect Or ...
- Spring IOC设计原理解析:本文乃学习整理参考而来
Spring IOC设计原理解析:本文乃学习整理参考而来 一. 什么是Ioc/DI? 二. Spring IOC体系结构 (1) BeanFactory (2) BeanDefinition 三. I ...
- Spring Cloud底层原理(转载 石杉的架构笔记)
拜托!面试请不要再问我Spring Cloud底层原理 原创: 中华石杉 石杉的架构笔记 目录 一.业务场景介绍 二.Spring Cloud核心组件:Eureka 三.Spring Cloud核 ...
- [转帖]Spring Cloud底层原理
拜托!面试不要再问我Spring Cloud底层原理 https://mp.weixin.qq.com/s/ZH-3JK90mhnJPfdsYH2yDA 毫无疑问,Spring Cloud 是目前微服 ...
随机推荐
- 2018.11.28 RF基础1
1 射频元件 高频电阻: 高频电容: 高频电感: 2 传输线 a 传输线效应:阻抗,3M法则. b 同轴线:RF中用 c 微带线: 常用: 1/4变换线 回波损耗:用网络分析仪测量 插入损耗:传输功率 ...
- linux命令返回值的含义
linux命令执行后无论成功与否都有一个返回值: 如果为 0,则表示命令执行成功,其它值则表示错误, 具体的错误码含义如下: "OS error code 1: Operation not ...
- C语言--第三次作业
要求一 . 1)C高级第三次PTA作业(1) 题目6-1 1.设计思路 (1)主要描述题目算法 第一步:将月份分别赋值: 第二步:利用switch语句,输 ...
- Ipv4和Ipv6的地址字符串长度
SOURCE IPv4采用32位地址长度 xxx.xxx.xxx.xxx 15max(string) IPv6采用128位地址长度 估计是 xxx.xxx.xxx.xxx. xx ...
- LG3781 [SDOI2017]切树游戏
题意 题目描述 小Q是一个热爱学习的人,他经常去维基百科学习计算机科学. 就在刚才,小Q认真地学习了一系列位运算符,其中按位异或的运算符\(\oplus\)对他影响很大.按位异或的运算符是双目运算符. ...
- vue-cli项目配置mock数据(新版本)
最新的vue-webpack-template 中已经去掉了dev-server.js 但是要进行模拟后台数据的,如何模拟本地数据操作? 解决方法: dev-server.js 改用webpack-d ...
- cocos2dx切换场景
第一屏必须: auto scene = GameMenu::createScene(); director->runWithScene(scene); 然后是主场景: auto scene = ...
- 更新RDL文件中的数据集(DataSets)
由于RDL XML文件中使用了两个命名空间: <Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/ ...
- unity的sprite添加点击事件
直接说方法 添加一个2dxxx的碰撞器 添加一个OnMouseDown的回调函数,这个函数看script reference就可以
- 黄聪:WordPress 多站点建站教程(三):主站如何调用子站的文章内容、SQL语句如何写?
1.如果懂得编程的朋友可以SQL语句,然后加上PHP函数等操作就可以通过直接调用网站的数据库信息来实现想要达到的目的. 既然要用到SQL语句首先得对WordPress多站点数据库有一个了解,多站点激活 ...