{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

Spring的特性到底是什么?

enrecul101enrecul101 回答2 收藏1
收藏问题

2条回答

MiracleWong

MiracleWong

回答于2022-06-22 18:29

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

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

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说到这,更多的技术分享,敬请关注。。。

评论0 赞同0
  •  加载中...
omgdog

omgdog

回答于2022-06-22 18:29

提起Spring,就不得不提重要的两大特性IOC(控制反转)和AOP(面向切面编程);


IOC 控制反转,就是在使用Spring之前,我们想要使用某个类的方法,只能通过new这个类的对象来调用方法,当然类方法除外;使用一次就得不停的new对象。使用了Spring之后,对象的创建就不在依赖程序员手动创建了,而是通过IOC容器,来创建与管理,创建出来的对象有一个统一的名称叫做Bean,在需要使用的时候通过java的反射机制,将这些bean注入需要使用对象中。而我们常说的DI(依赖注入)是实现控制的反转的一种方式。


AOP 面向切面编程,说的直白点就是通过一个方法作为切入点,在方法的前后做增强处理,常用的场景为:操作数据库的事务和日志打印,API入参处理。

评论0 赞同0
  •  加载中...

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<