版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第Spring零基础到进阶之鸿蒙开篇目录Spring是什么1.什么是容器?2.什么是IOC?3.理解SpringIoC4.了解DI
Spring是什么
用一句简单的话来概括Spring:Spring是包含了众多工具方法的IoC容器。那么问题来了,什么是容器,什么是IOC容器?下面就一起来看看吧
1.什么是容器?
容器就是用来荣南某种物品的装置,前面我们也是学了很多容器的,类似于List/Map就是一个存储数据的容器,Tomcat就是一个存储Web项目的容器。
2.什么是IOC?
IOC(inversionofControl)翻译成中文就是控制反转的意思,这具体是什么意思呢?通过一个例子来解释一下:
publicclassNewCarExample{
publicstaticvoidmain(String[]args){
Carcar=newCar();
car.init();
*汽⻋对象
staticclassCar{
publicvoidinit(){
//依赖⻋身
Frameworkframework=newFramework();
framework.init();
*⻋身类
staticclassFramework{
publicvoidinit(){
//依赖底盘
Bottombottom=newBottom();
bottom.init();
*底盘类
staticclassBottom{
publicvoidinit(){
//依赖轮胎
Tiretire=newTire();
tire.init();
*轮胎类
staticclassTire{
//尺⼨
privateintsize=30;
publicvoidinit(){
System.out.println("轮胎尺⼨:"+size);
}
此时就构建出来一辆汽车,此时认为只要打印出来了轮胎的尺寸就表示构建成功了:
但是如果需求如果发生了变化,不再自己给定汽车的轮胎尺寸,而是根据用户的需求来进行变化,此时就会发现要改的代码不仅仅只是一个参数
publicclassNewCarUpdateExample{
publicstaticvoidmain(String[]args){
//用户自己给定尺寸
Carcar=newCar(50);
car.run();
*汽⻋对象
staticclassCar{
privateFrameworkframework;
publicCar(intsize){
framework=newFramework(size);
publicvoidrun(){
//依赖⻋身
framework.init();
*⻋身类
staticclassFramework{
privateBottombottom;
publicFramework(intsize){
bottom=newBottom(size);
publicvoidinit(){
//依赖底盘
bottom.init();
*底盘类
staticclassBottom{
privateTiretire;
publicBottom(intsize){
tire=newTire(size);
publicvoidinit(){
//依赖轮胎
tire.init();
*轮胎类
staticclassTire{
//尺⼨
privateintsize;
publicTire(intsize){
this.size=size;
publicvoidinit(){
System.out.println("轮胎尺⼨:"+size);
}
这才仅仅是改变了一个轮胎尺寸,如果需求再需要加颜色、花纹、logo呢?那就会更加麻烦,这些都是当底层发生改变的时候,要修改的是整个调⽤链上的所有代码,那么为什么会出现这样的问题呢?
分析可知,这些类都是互相依赖的,耦合性非常强,那么该如何解耦呢?IoC就可以解决这样的问题,将控制权反转出去,不再自己掌控,而是将控制权交给IoC管理,只有自己使用的使用才调用
publicclassIocCarExample{
publicstaticvoidmain(String[]args){
Tiretire=newTire(20);
Bottombottom=newBottom(tire);
Frameworkframework=newFramework(bottom);
Carcar=newCar(framework);
car.run();
staticclassCar{
privateFrameworkframework;
publicCar(Frameworkframework){
this.framework=framework;
publicvoidrun(){
framework.init();
staticclassFramework{
privateBottombottom;
publicFramework(Bottombottom){
this.bottom=bottom;
publicvoidinit(){
bottom.init();
staticclassBottom{
privateTiretire;
publicBottom(Tiretire){
this.tire=tire;
publicvoidinit(){
tire.init();
staticclassTire{
privateintsize;
publicTire(intsize){
this.size=size;
publicvoidinit(){
System.out.println("轮胎:"+size);
}
此时就不在类里面进行控制了,而是只有在需要使用的时候,才去传入而是不是自己控制
再需要改动的时候的话,就只需要改最底层的,而不是改变整个控制链!
因此使用IOC最大的优点就是实现了代码的解耦;对象(Bean)生命周期交给IOC框架来维护,就不需要再关注对象的创建了!
3.理解SpringIoC
通过上面的对IoC的认识,就可以得知SpringIoC容器最核心的功能了:
将Bean(对象)存储到Spring(容器)中;将Bean(对象)从Spring(容器)中取出来;
4.了解DI
说到IoC就不得不提起DI(DependencyInjection)了,翻译过来就是依赖注入的意思,那具体代表什么呢?所谓依赖注⼊,其实就是在IoC容器运⾏期间,动态地将某种依
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 从书中学会的成长心得分享(9篇)
- 电子商务平台运营方案优化策略工具
- 跨文化沟通与合作框架工具
- 企业信息数据化管理工具
- 河南省平顶山汝州市重点达标名校2026年初三下学期5月模拟考试语文试题含解析
- 四川省遂宁中学2026届初三第二学期月考英语试题试卷含解析
- 浙江省宁波镇海区六校联考2026届初三4月质量检查生物试题含解析
- 吉林省农安县新阳中学2025-2026学年初三5月检测试题语文试题含解析
- 资源开发合作契约承诺函(4篇)
- 2026年湖南省怀化市初三4月模拟考试(一模)语文试题含解析
- 2026年滁州职业技术学院单招综合素质考试题库附答案详解
- 2026春统编版三年级下册道德与法治每课知识点清单
- 分岗设权内部控制制度
- 2025年建筑安全员c2考试题及答案
- 2026年全国体育单招考试时事政治(2025.6-2026.1)-2026届中职高考
- 2025中国国新控股有限责任公司招聘7人笔试历年常考点试题专练附带答案详解
- 降低呼吸机管路积水发生率QCC
- 留样观察记录表
- 崔允漷建构新教学心得体会(共13篇)
- DB32∕T 1553-2009 江苏省高速公路工程工程量清单计价规范
- 输血相容性检测室内质控-课件
评论
0/150
提交评论