Spring boot是Java程序员必须掌握的框架之一么?
毫不夸张的说:是的。
目前,不管是个人开发项目还是企业开发项目,如果选择的是Java语言,那我们第一个想到的就是用SpringBoot框架开发,因为用它太快太爽了。几分钟就可以将一个Web后端的项目跑起来。而我们只需要写业务代码就好了。这对于程序员来说简直就是天大的福利。
想想我们用SpringMVC的时候,是多么的痛苦。虽然SpringMVC也是非常优秀的框架(这也是必须要掌握的Java框架),但是基于XML文件的配置实在是太繁琐。启动一个Java Web项目,我们需要写一大堆的xml文件,spring.xml、application.xml、web.xml、springmvc-servlet.xml等等,不胜其烦。而且即便这些东西都配置好了,项目还不一定能启动起来。很多程序员应该都碰到过这个问题,bean加载的问题、数据源配置的问题、注解扫描路劲的问题,等等。反正,即使再NB的程序员,没个半个一个小时,跑步起来基于SpringMVC框架的项目。(但是这不影响它成为一个非常优秀的Java框架)。
而SpringBoot完全抛弃了繁琐的xml,在SpringBoot的项目中,几乎看不到xml文件。干净清爽的配置让人欲罢不能,这也是为什么SpringBoot目前这么火的原因,也是现阶段,Java程序员必须要掌握的框架。
最后总结一句:SpringBoot的好,谁用谁知道。
严谨的说法应该是:当前这个时间段SpringBoot是J2EE体系程序员必须掌握的技能之一。
如果你是一个java web开发者,那springboot几乎是绕不过去的,虽然也有struts、actframework、light4j这些选择,国内也有jfinal这些,但几乎都活在springboot的阴影里。甚至boot的前辈springmvc也逐渐有被替代的趋势。
那除了j2ee,java还能做什么?曾经java分为三大体系:j2se(基础),j2ee(web),j2me(手机,已死),现在j2ee大行其道,8成以上的java程序员都曾经或正在从事j2ee项目,但这不代表java只能做web开发。
可以做app开发,比如android,这个就不多说了。可以做桌面端程序,著名的eclipse就是java开发的。可以做网络应用程序,比如tomcat、jetty也是java开发的。
其实java非常擅长做网络程序,1.4以后引入了nio,可以轻松提供非阻塞的高伸缩网络应用程序,这也是为什么越来越多的物联网IOT解决方案选择java作为开发语言的原因。
我认为【是的】,如果是Java程序员的话,虽然你现在工作中可能没有用到Spring Boot,建议还是要学习一下的;我是基于这几点考虑的:
Spring Boot确实让我们的开发变得更简单;
社区活跃度高,生态好;
用Spring Boot的公司确实比较多(不考虑多年前的老项目);
Spring Boot的历史
在有Spring Boot之前,Spring框架是当时很火的一个框架(现在也很火),不过随着使用Spring框架的人越来越多,Spring从一个简洁的框架,慢慢地变成大而全;Spring能够支持的组件越来越多,需要引入的配置文件也越来越多(配置文件爆炸、配置炼狱);
Spring也意识到这个问题,而且随着微服务概念的兴起,也需要有一个可以支持快速开发微小独立应用的框架;在2012年10月,Spring JIRA中创建了一个功能请求,要求在Spring框架中支持无容器Web应用程序体系结构;这个功能要求促使了2013年Spring Boot项目的研发。继而在2014年4月,Spring Boot 1.0.0发布。
Spring Boot给开发带来的好处
简单地了解了Spring Boot的历史,我们主要还是看一看,Spring Boot可以给软件开发带来什么样的好处。
让开发变快:构建项目很快;支持主流的关系数据库和非关系数据库;内嵌容器;自带监控;简洁的安全策略集成...;总结来说,Spring Boot支持大部分主流框架的集成,并且只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。
支持多种测试框架:比如JUnit、Spring Test、Mockito等等,开发人员只需要引入spring-boot-start-test,就可以对数据库、Mock等进行测试;
配置变的简单:【约定优于配置】,这个意思是,已经制定好一套规则了,如果你遵守的话,就不用再写配置了,如果你不打算遵守的话,再写配置告诉程序你想怎么样;
- 在最后强调一下,虽然说需要学习掌握Spring boot,但是你却不能只盯着这一个框架,肯定是不够的;
Spring全家桶,来一套哇!
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
可以说是的,现在都在讲前后端分离,springboot已经成为主流的微服务架构,开发容易,集成组件简单,大大降低了开发难度,提升了开发效率。
比如开源监控系统wgcloud,就使用springboot开发,可以在github和码云搜到,挺好用的,有2.5k的star
是的,Spring boot = Spring + Spring MVC。
用过ssm的都知道配置有多麻烦,七八个配置文件,看的眼睛都疼,出错了还不好找。
Spring boot直接为我们解决了这些问题,不需要任何配置就可以运行。
不过还是建议学习ssm,springboot虽然上手快,但出了错不好排查。
关于自学视频,可以关注公众号[秃头哥编程]回复关键字即可领取整套视频,包括Java基础框架,进阶到架构。
你平时主要使用什么Java开发框架?
Java框架一直以来都是面试必备的知识点,而掌握Java框架,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能对当前正在开发中的系统有整体的认知,从而更好的熟悉和学习技术,这里我把常见的一些框架给您整理一下。
Spring框架,这个只要想从事java开发或正在从事java开发的,没有人不知道吧?没有人不在用吧?一般应该是天天用才是。SpringIoc和SpringAOP是Spring的两大核心功能,让java程序员解放了,各种整合框架,轻松搞定,把重心放到业务实现上去。
hibernate框架,也是我最喜欢的框架之一。是开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用。
可以说java官方的jpa,就是适应hibernate的超好用,而设计的。如果没有hibernate,可以不一定有orm的出现。
MyBatis,不多说, 也是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准,包括支持对象管理组(OMG),面对新技术的机遇,诸如互操作性和云架构,提供技术实现。
随着DevOps的流行,Spring Cloud是一系列框架的有序集合,当前最为流行。这里涉及到好多框架,我就不一一列出来了,大家可以自己去了解。
总之,做为一个Java开发者,熟练掌握并应用20种以上框架应该不叫算多,Java的生态太强大,所有大家要好好学习呀。
就拿我们项目来举例说一说吧。
我们的项目是一个纯后台服务的项目,也就是没有前端页面,只对外提供服务;项目是是基于 Spring Boot 来做的,引入 spring-boot-starter-web,直接对外暴露接口,报文使用的 JSON,有极个别的接口是从老系统迁移过来的,为了让调用方尽可能地稍作修改,所以保持了 XML 的报文;在正式的生产环境中,也是使用的内置的 Tomcat;集成了 Swagger,来做接口的文档在线自动生成。
ORM 框架选择的是 MyBatis,由于项目中大部分的查询都做到了单表查询,而且查询条件比较固定,所以直接使用注解做的 SQL 语句绑定。
因为项目不仅使用了关系型数据库,而更多的数据是加工关联后保存到了 MongoDB 中,所以项目也用到了 Spring Data MongoDB,我们的 MongoDB 是做了副本集的部署,使用 Spring Data MongoDB,只需要做简单的配置,就可以完成对多台 MongoDB 的访问,如果其中一台 MongoDB 挂了,对服务也是没有影响的,所以我们做 MongoDB 扩容的时候是可以在线做的(MongoDB 扩内存和 CPU 的时候需要停机)。
和部分系统的交互使用到了 RabbitMQ,而 Spring Boot 只要引入 spring-boot-starter-amqp,其实就可以很方便地完成和 RabbitMQ 的集成;生产者和消费者都非常方便。
因为是纯接口的服务,为了减轻数据库的压力,所以我们根据业务场景,将一些接口的结果直接缓存到 Redis 中(数据变化不频繁,并且业务场景的实时性要求不是很高)。在集成 Redis 的时候,我们前后试了两种方式:
Spring Boot 项目,直接使用 @Cacheable 注解就可以完成和 Redis 最简单的集成,但是后来因为设置缓存的超时时间不够灵活,我们后来改成了第二种方案;
使用 RedisTemplate,可以完成对 Redis 的绝大部分操作。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。