-------------------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
void add(){}

 
 

}

 
 

 
 

public class UserServlet{

 
 

UserService userService=new UserService();

 

userService.add();

 
 

}

 
 

 
 

 
 

5、使用工厂模式解耦合,但
Servlet 和工厂类又有了新的耦合,

所以它并不是最终的解决方案

 
 

 
 

 
 

public class UserService{

 
 

public
void add(){}

 
 

}

 
 

 
 

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"
class="com.siwuxie095.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】

最新文章

  1. IOS轮播图
  2. MVC3.0删除数据的时候给提示信息
  3. POJ 1845 Sumdiv 【逆元】
  4. React Native知识点
  5. JS0热身运动
  6. javascript中写不写$(function() {});的区别
  7. linux学习笔记之线程同步机制
  8. sql 聚合函数用法,及执行顺序
  9. wget-文件下载工具
  10. swift3.0 coreData的使用-日记本demo
  11. 从字符串获得MAC地址的方法
  12. 自制操作系统Antz(5)——深入理解保护模式与进入方法
  13. EnableAutoConfiguration注解的工作原理(org.springframework.boot.autoconfigure.EnableAutoConfiguration=core.bean.MyConfig)
  14. 数据科学VS机器学习
  15. cf相关命令
  16. windows下的redis集群搭建的艰辛历程
  17. 8086汇编语言(1)虚拟机安装ms-dos 7.1
  18. OpenGL 球体世界
  19. JUC——线程同步锁(Condition精准控制)
  20. BZOJ5286 HNOI/AHOI2018转盘(分块/线段树)

热门文章

  1. Python基础学习----拆包
  2. 判断一颗二叉树是否为二叉平衡树 python 代码
  3. 结合File类浅析递归的使用
  4. [UOJ300][CTSC2017]吉夫特
  5. linuxkit 基本试用
  6. ambassador 学习九 多ambassador部署说明
  7. Rails Cookie和session使用
  8. 关于location.href赋值的php用法
  9. macOS --- 配置基于域名的虚拟主机
  10. ②Jenkins集成—集成构建部署