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 是目前微服 ...
随机推荐
- python 读写三菱PLC数据,使用以太网读写Q系列,L系列,Fx系列的PLC数据
本文将使用一个gitHub开源的组件技术来读写三菱的plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 gi ...
- Centos7环境下安装python3.6.4 并与python2共存
最近安装了新系统centos7,本身自带python2.7,但是由于需要使用python3 来运行一些应用,所以想到在centos环境下安装python3,并保证其和python2 可以共存. 步骤如 ...
- train validation test
http://stats.stackexchange.com/questions/19048/what-is-the-difference-between-test-set-and-validatio ...
- 对MYSQL慢查询slow query 日志记录内容的疑惑
初始:由于新装服务器出现CPU占用过高,响应不及时的问题排查,因为环境基于最基础的LAMP构架 想到开启 MYSQL slow_query_log 慢查询日志做原因分析: 但是看到日志内容之后有点茫然 ...
- WPF 中的 NameScope
我们在 WPF 中使用绑定时可以使用 ElementName=Foo 这样的写法,并且还能够真的在运行时找到这个名称对应的对象,是因为 WPF 中提供了名称范围概念. 实现 INameScope 接口 ...
- Python面试题(十二)
1.利用Python执行shell脚本取得返回结果 import subprocess result = subprocess.getoutput('dir') 答案 2.用Python将" ...
- Centos 6 下安装 erlang 手记
基于openfire的IM项目已经成功上线,接下来的计划准备開始调研 ejabberd. ejabberd 是基于erlang开发的.那么就先从搭建 erlang环境開始吧. 选择的操作系统为Ce ...
- NTP时间服务器的配置
1.NTP简介NTP(Network Time Protocol,网络时间协议)是用来使网络中的计算机,时间同步的一种协议.NTP服务器利用NTP协议来提供时间同步服务. 2 .环境准备主机名 ...
- PHP调用OCX控件的具体方法
需要设置php.ini文件,找到这行com.allow_dcom=true,把com组件支持启用 使用PHP调用OCX控件,本不是个难题,但现实中采用flash回避的方法更通用.真正使用ocx的不多, ...
- Some index files failed to download. They have …… or old ones used instead
问题: 平台:Ubuntu12.04 W: Failed to fetch http://us.archive.ubuntu.com/ubuntu/dists/precise/universe/bin ...