CSS学习总结(总)

网络安全能力认证CCSC技术Ⅰ级认证培训

  返回  

Spring IoC容器与Bean管理二:Spring初识二:Spring主要技术、主要子工程等Spring生态体系介绍;(与传统开发方式相比)Spring Ioc容器的好处;

2021/7/21 13:23:56 浏览:

在【Spring IoC容器与Bean管理一:Spring初识一:IoC(控制反转)概念性简述;】中介绍了一种理念:【IoC控制反转】;而在具体实现上,Java中著名的Spring框架就应用了【IoC控制反转】;为此,本篇博客就简单介绍下Spring的基本内容;

 说明:

(1)本篇博客没有什么重要内容,仅仅是一些阐述性、背景性的内容,所以快速浏览即可;

(2)然后,本篇博客个别地方的描述,可能存在偏差,回头要修正!!!!!!!!!!​​​​​​​

目录

一:Spring简述 

二:狭义上的Spring框架 

三:广义上的Spring生态体系 

(1)Spring逐渐发展出了以下七大技术:这七大技术,是各种Spring工程和框架的支撑;

(2)在以上七种技术的基础上,派生出来了几十种不同的项目;

(3)然后,这儿先主要看看最基础的【Spring Framework】;

四:再次说下,【使用Spring】的好处;(这儿主要是IoC容器的好处啦)

(1)传统的开发方式:对象直接引用对象

(2)引入Spring框架:使用其中的Spring IoC容器

(3)Spring IoC容器职责


 

一:Spring简述 

(1)狭义的Spring框架和Mybatis框架类似,都是通过一种高度的封装和抽象的Java技术,来简化程序的开发;只是Mybatis框架简化的是数据库的增删改查;Spring框架提供了IoC容器,来管理系统中的对象及其依赖;

(2)广义的Spring:最原始的Spring是只有一个IoC容器的Spring Framework,对对象集中管理;在此基础上,Spring不断发展,派生了大量的工程和完善的生态体系,由此形成了广义上的Spring;

二:狭义上的Spring框架 

(1)以前在实际开发中,有很多 【“开发体验不友好” 或者 “功能缺失” 的部分】;引入Spring框架后,通过Spring的补充,可以让整个体系更加完整;

(2)IoC(控制反转)容器:用于统一管理系统对象;AOP面向切面编程:IoC容器是所有对象管理的基础,包括AOP在内的很多东西都是建立在IoC基础上的;

(3)Spring基于IoC,扩展了很多功能;还是那句话,在Spring中,IoC是前提和基础;

在Spring IoC的基础上,扩展出了若干不同共功能的子项目;Spring已经变成了一站式综合解决方案;无论是,web开发,Android开发,分布式开发,在Spring生态体系中都能找到对应的解决方案; 


三:广义上的Spring生态体系 

(1)Spring逐渐发展出了以下七大技术:这七大技术,是各种Spring工程和框架的支撑;

(1)Microservice:分布式微服务:其提供了Spring cloud,可以帮助我们轻松地实现分布式架构;

(2)Reactive:响应式编程:这是一种基于异步的、非阻塞的、全新的开发理念和技术;

(3)Cloud:云端技术:如在云端进行自动扩展和自动连接,就可以使用Cloud这个云端技术;

(4)Web apps:网页应用程序:这是我们最常用的一个模块,Spring提供了Spring MVC,让我们摆脱了以前使用Servlet的那种繁琐的开发方式,以更简洁和更优雅的API,来完成web应用程序的开发;

 (5)Serverless:无服务器编程:在程序运行过程中,可以让网页以单页形式拜托服务器的束缚,从而让用户获得更好的使用体验;这是最近火起来的一个概念;

(6)Event Driven:事件驱动;

(7)Batch:批处理;

以上,就是Spring能够做到的事情;

(2)在以上七种技术的基础上,派生出来了几十种不同的项目;

进入Spring官网【https://spring.io/】

即,可以看到,经过多年的发展,Spring在【狭义的,Spring Framework框架,IoC容器】的基础上,派生出了如此之多的,针对不同场景的不同的应用;由此出现了Spring派:该派的开发者,在解决问题的时候,会优先考虑在Spring生态中是否提供了对应的解决方案,如果有直接优先去用;

(3)然后,这儿先主要看看最基础的【Spring Framework】;


四:再次说下,【使用Spring】的好处;(这儿主要是IoC容器的好处啦)

(1)传统的开发方式:对象直接引用对象

          ● 传统开发方式,由于对象之间往往会有直接的引用, 而这个引用是通过new关键字来创建的,所以导致程序难以维护;

          ● 如上图案例:【使用者】需要用到【A对象】,但是【A对象】要实现某个功能,需要再去new一个【B对象】;

          ● 结合以前的开发经验,【A对象】可以看成一个Service,【B对象】可以看成一个Dao;然后,在Servlet中,需要new一个Service对象,然后在Service对象中,又需要new一个Dao对象;

这种开发方式又很大弊端;比如,随着程序的开发,【B对象】已经不适合使用了,而是由其他程序员开发了另一个【C对象】,此时,如果【A对象】要抛弃【B对象】而拥抱【C对象】,那么就需要修改【A对象】的源代码,改new【C对象】;既然,修改了源代码,那么程序就要重新编译、重新测试、重新发版、重新审批、重新上线;而这是一个非常繁琐的流程;

所以,在实际开发中,为了避免如上的问题,不推荐由具体的【使用者】去主动创建【对象】;(自然,案例中,对于【A对象】来说,【使用者】是使用者;;;;而,对于【B对象】来说,【A对象】是使用者)

PS:这儿的描述,大概率存在偏差,以后回头来改; ???????????????????

(2)引入Spring框架:使用其中的Spring IoC容器

  

          ● 引入Spring IoC容器,采用被动的方式,由IoC容器来创建和管理这些对象,【使用者】只是单纯的从IoC容器中,提取对象就可以了;

          ● 还是前面的例子,如果用Spring来做,就如上图所示:

          ● 这个IoC容器是一个抽象的,其就相当于在Java的运行内存中,开辟了一块空间,这个空间是由Spring管理的;

          ● 所有的对象,不是由【使用者】或者【A对象】(PS:相对【B对象】来说,【A对象】也是使用者啦)来创建的,而都是由Spring IoC容器统一负责创建;

          ● 当IoC容器,把对象都创建好了之后;由于【A对象】是依赖于【B对象】的(即在【A对象】中是需要用到【B对象】),我们自然不是在【A对象】中去new一个【B对象】,而是基于反射技术,将【A对象】的依赖【B对象】注入到【A对象】中;这就是所谓的依赖注入(DI);

          ● 引入Spring IoC容器来统一管理对象之后,对于【使用者】来说,不需要关注在容器内部到底有几个对象,也不需要关注对象之间的关系是什么样的;【使用者】只需要关注“要从什么地方将需要的对象,提取出来”就行了;即【使用者】不再直接面向具体的对象,而是面向IoC容器,通过IoC容器获取所需要的对象;

(3)Spring IoC容器职责

          ● 在Spring中可以通过xml配置、注解或Java Config的方式,来实现IoC容器;

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号