Spring零基础到进阶之鸿蒙开篇_第1页
Spring零基础到进阶之鸿蒙开篇_第2页
Spring零基础到进阶之鸿蒙开篇_第3页
Spring零基础到进阶之鸿蒙开篇_第4页
Spring零基础到进阶之鸿蒙开篇_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论