什么是spring,spring有什么缺点吗?

2022-01-08 10:14:35 百科大全 投稿:一盘搜百科
摘要明明一个很轻量级的框架,却给人感觉大而全,这就是它的缺点什么是spring。Spring的核心概念是啥,最主要的,IoC和AOP,这两个核心服务的对象是啥,就是那堆beans,Spring我们可以理解

明明一个很轻量级的框架,却给人感觉大而全,这就是它的缺点什么是spring。Spring的核心概念是啥,最主要的,IoC和AOP,这两个核心服务的对象是啥,就是那堆beans,Spring我们可以理解为就是存放这些bean的容器,它最核心的就干这些事。IoC干嘛的,就是为了让开发者关注的重心放在如何使用这些bean。不管bean怎么来,只要@Autowired就给我老老实实出现,让我调接口就好,不需要每次用之前都要手动构建,尽量减少手动实例化bean的次数。Spring Boot以前,主要在beans.xml中注册bean,Spring Boot的话只要在Configuration中定义一个@Bean方法即可,就为了做好这件事,Spring弄了多少东西,BeanDefinition,BeanFactory,FactoryBean,然后Bean的生命周期接口好几个,Aware接口又好几个,等等,然后是AOP,AOP是很好的特性,在Spring中其主要目的就是以一种非浸入的方式对bean进行扩展,看到没,又是bean。为了对bean支持,Spring弄了一套AspctJ的子集,既有Java原生的接口代理,又有更加灵活的Cglib,光是AOP的概念就不少,更不要说实现的原理。简单的大e家都可以说出一二三四五,但深入细节谁有把握?所以,Spring就是围绕着bean展开的,它主要就是作为bean的容器,在这个基础上,有了SpringMVC,有了JPA,有了Cloud,有了Data Flow,以及其他模块。但这些模块的本质,不全是Spring,比如JPA,核心还是Hibernate,Cloud,核心是另外一套微服务框架。Spring就好比胶水,通过bean把这些模块粘在一起。实践过程中,反复的提醒自己,不要用Spring玩花,让它老老实实的做bean的容器就好了。我这么说,不看源码,你会觉得Spring重吗?可就这么些个东西,Spring弄出了多少名堂。随便找个地方打断点,调用就不下二十来层,在现在这种强调轻量化服务的大环境下,不被吐槽才怪。当然,我认为也不能全怪Spring。Java这门语言动态性本来就是它的弱项,Spring能把Java包装的像个动态化的语言已经蛮拼了。Spring背的最大的锅,我认为就是J2EE,就凭那套在当时有一定价值但放现在已经淘汰的标准,没有Spring,Java的企业级市场未必有今天。不过话说回来,从学习企业级Java开发的角度看,Spring的代码依然是教科书般的代码。面向对象封装,编程原则,设计模式,都是具有很高的参考价值。如果你才开始,我建议先沉住气,老老实实的敲代码,看文档,不管最后还在不在Java圈,将来一定会收获不小。有时候,你不复杂一些,又怎么能体会到简单的价值呢?

Spring的特性到底是什么?

spring之所以崛起是因为它有着最重要的特性-IOC!

什么是spring,spring有什么缺点吗?

IOC:即Inversion of control,意为控制反转,原本两个互相依赖的类,需要通过new对象的方式,然后提供方法调用,这样类中会出现大量的new(比如类中有十个方法,每个方法都要new一次),这个对象创建的方式是开发者自己主观控制的,而引入了IOC之后,通过依赖注入(DI,IOC的主要实现方式)需要依赖的类,然后会在运行使用的时候,由容器自行创建一个实例对象提供使用,实现了容器对对象的控制,这样就实现了对象控制的反转!

什么是spring,spring有什么缺点吗?

什么是spring,spring有什么缺点吗?

spring又是如何实现IOC的呢?我们知道spring项目会使用xml配置(bean定义)或者注解(@service.@component等)进行对象的定义,其中包括了需要管理的对象的类路径,在spring容器启动的时候,会通过BeanFactory(当然通常是这个接口的实现ApplicationContext)将类路径以hashMap的方式进行存储,然后再需要使用的时候取出类路径,再通过反射技术(class.forName)得到相应的实例对象,并把对象引用传递(注入)给依赖的类中,进行使用!

当然,除了IOC和DI,spring鼎鼎大名的还有AOP(Aspect Oreinted Programming)功能,意为面向切面编程,通过对一个方法的切入,可以在方法前置,后置等进行处理!对诸如日志打印,前置安全检验,拦截等都可以通过AOP进行实现,而原本的方法不需要感知这些操作,专注于业务功能开发,这样彻底解耦了技术和业务代码的实现!

不仅如此,spring还提供了对于其他功能框架良好的支持和扩展,比如缓存,事务,数据库连接,安全认证,测试等等都能有插件化的支持,方便基于spring搭建一套完整的,功能齐备的应用!

现在的spring家族,因为加入了springboot,springcloud等成熟,集成化的框架,对开发者来说更是福音!不仅对各种功能有着开箱即用的便利,还能快速搭建一套微服务,对于服务注册与发现,网关,雪崩熔断等都有集成使用!随着微服务的进程逐渐加快,可以说spring还必将大放光彩!

spring不仅解耦了对象关联,还解耦了业务和技术,同事提供了成熟的集成方案,是JAVA开发者没办法拒绝的框架,spring说到这,更多的技术分享,敬请关注。。。

声明:一盘搜百科所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系 88888@qq.com