一、IoC

IoC是一种概念,是一种思想,指将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转是对对象控制权的转移,从程序代码本身反转到外部容器。

当前IoC比较流行的两种实现方式:依赖注入(DI)和依赖查找(DL)。

依赖注入,目前最优先的解耦方式,程序代码不做定位查询,这些工作由容器自行完成。

二、传统开发方式的缺点

Spring三层架构:

 @Test
public void test01() {
ISomeService service=new SomeServiceImpl();
service.dosome();
}

test相当于view层,view层和service层耦合在一起,service实现类改动,view层便需要改动,耦合度高。

三、Spring配置文件

打开spring-framework-4.3.2.RELEASE\docs\spring-framework-reference\html\xsd-configuration.html,复制以下代码到applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- bean definitions here --> </beans>

配置XML Catalog

四、从容器中获取对象

(1)在applicationContext.xml中注册Service

 <bean id="myservice" class="com.jmu.service.SomeServiceImpl"></bean>

相当于

SomeServiceImpl myService=new SomeServiceImpl();

(2)创建容器对象,加载Spring配置文件

 @SuppressWarnings("resource")
@Test
public void test02() {
//创建容器对象
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
ISomeService service=(ISomeService) ac.getBean("myService");
service.dosome();
}

 五、ApplicationContext和BeanFactory容器的区别

  1. ApplicationContext容器在进行对象初始化时,会将其中的所有Bean(对象)进行创建;
  2. BeanFactory容器中的对象,在容器初始化时,并不会被创建,而是在真正获取该对象的时,才被创建;
  Application BeanFactory
优点 响应速度快 不多占用系统资源
缺点 占用系统资源(内存、cpu) 相对来说,响应速度慢

最新文章

  1. HttpHander与httpModel配置与应用
  2. java多线程 生产者消费者模式
  3. 解析json串,利用正则表达式,split
  4. Activity使用startActivityForResult时出现onActivityResult()不执行的问题
  5. Little Jumper---(三分)
  6. crontab实现每秒执行
  7. rhel_7.x 安装mysql
  8. 使用C#选择文件夹、打开文件夹、选择文件
  9. bzoj 1096: [ZJOI2007]仓库建设
  10. 玩转Android---事件监听篇---第2篇
  11. ie6下margin双倍距的问题
  12. Dokan简介[转]
  13. libcurl模拟登录CSDN并自动评论资源以获取积分
  14. Linux find运行机制详解
  15. Python 装饰器总结
  16. javascript 之执行环境-08
  17. 使用腾讯云“自定义监控”监控GPU使用率
  18. arcEngine开发之查询的相关接口
  19. SHAREDPOOL使用率的监控部署及思考
  20. blfs(systemv版本)学习笔记-总页

热门文章

  1. 代理服务器和NAT技术
  2. C#-★结构体★
  3. 验证客户端的链接合法性和socketserver模块实现并发
  4. TestGc finalize()
  5. 4G模块在AM335x上的移植
  6. mysql安装启动 ERROR 1045 (28000): Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: NO)
  7. docker升级
  8. Comparing deep learning frameworks: Tensorflow, CNTK, MXNet, &amp; Caffe
  9. springboot和quartz整合分布式多节点
  10. CentOS下安装官方RPM包的MySQL后找不到my.cnf