Spring_Spring与IoC_第一个程序
2024-09-26 19:33:07
一、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容器的区别
- ApplicationContext容器在进行对象初始化时,会将其中的所有Bean(对象)进行创建;
- BeanFactory容器中的对象,在容器初始化时,并不会被创建,而是在真正获取该对象的时,才被创建;
Application | BeanFactory | |
优点 | 响应速度快 | 不多占用系统资源 |
缺点 | 占用系统资源(内存、cpu) | 相对来说,响应速度慢 |
最新文章
- HttpHander与httpModel配置与应用
- java多线程 生产者消费者模式
- 解析json串,利用正则表达式,split
- Activity使用startActivityForResult时出现onActivityResult()不执行的问题
- Little Jumper---(三分)
- crontab实现每秒执行
- rhel_7.x 安装mysql
- 使用C#选择文件夹、打开文件夹、选择文件
- bzoj 1096: [ZJOI2007]仓库建设
- 玩转Android---事件监听篇---第2篇
- ie6下margin双倍距的问题
- Dokan简介[转]
- libcurl模拟登录CSDN并自动评论资源以获取积分
- Linux find运行机制详解
- Python 装饰器总结
- javascript 之执行环境-08
- 使用腾讯云“自定义监控”监控GPU使用率
- arcEngine开发之查询的相关接口
- SHAREDPOOL使用率的监控部署及思考
- blfs(systemv版本)学习笔记-总页
热门文章
- 代理服务器和NAT技术
- C#-★结构体★
- 验证客户端的链接合法性和socketserver模块实现并发
- TestGc finalize()
- 4G模块在AM335x上的移植
- mysql安装启动 ERROR 1045 (28000): Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: NO)
- docker升级
- Comparing deep learning frameworks: Tensorflow, CNTK, MXNet, &; Caffe
- springboot和quartz整合分布式多节点
- CentOS下安装官方RPM包的MySQL后找不到my.cnf