JAVA开发Spring框架还流行吗?
我从事java开发已经多年了,有幸回答你的问题!
就我的经验来看,学习JAVA不一定要学spring,你可以开发小应用,你可以做图形界面,你可以做android开发!但如果你是做服务器开发,那么spring是你必须的选择!
我JAVA从业经验中,经历了SSH,SSM,SpringMVC+M,Spring boot和Spring cloud,等等框架,核心都是Spring,都离不开spring!
spring的妙用有哪些呢?从spring设计伊始就是为了解决对象的创建和管理!后来功能愈发的完善,变成了垄断性的框架!
1,控制反转(IOC)的思想,运用依赖注入(DI)的技术,让我们管理对象的时候再也不用new new new了!防止大量对象的创建!防止组件之间的强依赖!
2,运用了大量的反射,代理,工厂方法,是我们学习编码技巧的最好模范!
3,AOP(面向切面编程)技术,能够使用少量代码搭建完美的的日志管理,权限管理,运行期监控!
4,低侵入性!让我们可以轻松耦合诸如struts,hibernate,mybatis,redis,memcache,amoeba,actibemq等包括数据层,控制层,缓存,数据中间件,消息中间件的中间件!
5,低耦合特性:通过依赖注入特性,可以借助spring容器创建,管理对象,防止在代码中硬性注入对象,防止对象混乱!
6,通过@transaction注解,可以实现声明式事务,在注解中的代码都可以在一个事务当中,实现最简单的事务控制,异常回滚!
7,spring源码使用了诸如工厂,单例,代理,构造者,策略,模板等多种设计模式,是JAVA程序员写出优良代码的不二范例!
8,提供大量诸如beanUtils,qstringUtils等优秀工具类!
.....
但是spring 4之前,用spring开发web配置过于繁杂,笨重!让程序员不用专注于业务代码开发,spring boot ,spring cloud由此诞生,将spring再次推向辉煌神坛!
spring cloud家族:
1,web开发:使用web-starter将web开发精炼到极其简单的地步,只需简单的几行代码就可以实现一个服务!
2,服务发现和治理:使用eureka-starter将服务注册到指定服务器上,对于健康,宕机的服务进行自动管理!
3,熔断器:Hystrix用于诸如遇到雪崩效应,不断大量重试等自动服务熔断!
4,网关:使用zuul实现网关路由!
5,配置集中化管理:使用config实现配置文件的统一管理和热部署!
.......
可以说spring是JAVA程序员的《葵花宝典》,其中提供的各种大招,能简化我们的开发,大大提升开发效率!
作为JAVA工程师,你用spring吗?
JavaWeb框架从之前的SSH,到现在的SSM,软件的构架在化重从轻,之前非常好用的Struts和Hibernate被人们认为太笨重,效率低,这是一个追求效率的时代,Struts被SpringMVC取代,Hibernate被MyBatis取代。
为什么Spring没有被取代?而且还又来了一位Spring家族的成员,Spring框架实在是太厉害了,而且远远不止这些,我们会慢慢看到Spring的野心,是把所有的东西全部取代,成为Web一站式解决方案。
Spring Boot的出现大大方便了Web开发流程,Spring Cloud更是想成为分布式系统的构架标准,现在的微服务构架大多数都开始用Spring Boot进行开发。Spring家族产品几乎遍及各个技术层。而且应用的越来越广泛。
所以说,Spring框架在不断的发展中,而且更是把握住了现在正流行的分布式微服务系统的构架主导,流行是必然。
如果你指的是java server side的开发,那么DI/IOC/AOP已经成了一种不需要讲出来的基础设施了。而spring则是这个领域的事实标准(Google的Juice也是一个选择),没必要绕开它不用或者自己造轮子。所以,Spring以及它所代表的编程理念,毫无疑问是流行的。
从我的经验来讲,我用Spring很多年,但绝大多数时候我都没想起我在用Spring,因为我没有什么需要与Spring打特别的交道,它只是作为一个DI容器,安安静静呆在下面。
我个人有个习惯,不喜欢与一个框架深度纠缠,那么我就要想法子包装/抽象它让它变成可插拔的,对我的业务代码没有侵入和深度耦合。
当然,Spring现在非常庞大了,除了核心的IOC容器,还有一堆组件/框架,这就需要根据项目的具体场景,选择要用什么。时下流行的微服务,肯定就选cloud/boot,比如我个人不喜欢MVC,所以从来不用spring web框架。
所以,开发是个动脑子的活儿,要用什么,怎么用,永远是你说了算;而不是被某一个框架绑架了,不明就里上来就SSH。