netty框架与spring区别是什么?

TheDisguiser 2020-08-03 17:21:42 java常见问答 13407

netty框架与spring框架都是目前java中的火热框架,小伙伴们知道它们具体有哪些区别吗?本篇文章就带大家详细了解一下它们。

Netty

具体的说,Netty 是一个专门从事异步事件驱动的网络应用程序框架,一般适用于快速开发可维护的高性能协议服务器和客户端。

Netty 的特点

Netty 会对 JDK 自带的 NIO 的 API 进行封装,它的主要特点有:

1)、设计优雅

它适用于各种传输类型的统一 API 阻塞及非阻塞 Socket;基于它灵活且可扩展的事件模型,可以清晰地分离关注点;高度可定制的线程模型 - 单线程,一个或多个线程池;真正的实现无连接数据报套接字支持(自 3.1 起)。

2)、开发便利

无其他依赖项,只要JDK 5(Netty 3.x)或 6(Netty 4.x)就足够了。

3)、高性能,吞吐量更高

延迟更低,减少资源消耗,最小化不必要的内存复制。

4)、安全

具有完整的 SSL/TLS 和 StartTLS 支持。

5)、社区十分活跃

社区活跃,版本迭代周期短,发现的 Bug 可以被及时修复,同时,更多的新功能会被加入。

Spring

一个轻量级Java开发框架,且它是开源的。

Spring四大核心特点

1)、非侵入式

非侵入式具体指Spring框架的API不会在业务逻辑上出现,即,业务逻辑是POJO。因为业务逻辑中不存在Spring的API,所以业务逻辑可以从Spring框架快速的移植到其他框架,即,与环境无关。

2)、容器

Spring作为一个容器嫩够管理对象的生命周期和对象与对象之间的依赖关系。它可以通过配置文件,来定义对象及设置与其他对象的依赖关系。

3)、IoC

超级核心之一,控制反转(Inversion of Control),即创建被调用者的实例不是由调用者完成,而是由Spring容器完成,并注入给调用者。

当在项目中应用了IoC时,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。即,不是对象从容器中查找依赖,而是容器在对象初始化时在对象请求前就主动将依赖传递给它。

4)、AOP

超级核心之一,面向切面编程(AOP,Aspect Orient Programming),这不是功能,是一种编程思想,是面向对象编程对OOP的补充。许多框架都实现了对AOP编程思想的实现。Spring也提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务,如日志和事务管理进行开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。

其实我们的日志、安全、事务管理等服务都可以理解为一个“切面”,以前这些服务都是一直直接写在业务逻辑层代码中,这首先有着两点不好:一是业务逻辑不纯净;二是这些服务被很多业务逻辑反复使用,完全可以剥离出来做到复用。AOP就是这些问题的解决方案,它嫩够把这些服务剥离出来形成一个“切面”,等待复用,再将“切面”动态的“织入”到业务逻辑中,让业务逻辑能够访问到“切面”服务。

以上就是本篇文章的所有内容,更多框架相关java架构师知识请持续关注本网站了解详情。

推荐阅读:

netty是什么?netty应用场景有哪些?

netty面试题及答案常见有哪些?

spring整合solr如何实现?详解