Spring Boot 之基础知识
Spring Boot 之基础知识
spring Boot 在 Spring 生态中的位置:
其核心是:约束大于配置
想尽可能的将程序猿从配置中解放出来,更加快速地开发项目。
spring Boot学习要求
1. Spring基础
2. Maven/Gradle
3. Git
4. Docker
5. Docker Compose
学习spring boot最好要有Spring的使用基础,当然,spring boot本身也能让你快速的入门使用它,但如上面说的,一旦你碰到问题,没有spring使用基础,你会变得十分被动,加上文档很少,网上基本找不到bug资料,所以你懂的;然后就是要求你多少了解Maven或者grade配置,spring boot是基于这些实现项目依赖的管理;最后,说说IDE工具,这也是个人使用习惯,个人现在比较推荐大家学习使用下IntelliJ IDEA,虽然他和常用的Eclipse工具有所不同,但使用起来,它的索引机制,会让我们的开发体验相当顺畅(除了第一次打开建立索引非常耗时外)。
对于Git、Docker容器技术,其与Spring Boot的关联度非常的高,大部分的应用都是托管在GitHub上,然后,因为Spring Boot开发的应用大多服务与微服务架构,而这种架构通常依托与Docker实现快速部署和compose一键部署,所以了解和学习他们也变得非常有必要。至于后面要学习的Docker部署集群管理工具Mesos或者Kubernetes等,其实也是要掌握的,这里推荐coding(码市)网站,上面有很多技术博客讲解实际开发者使用体验和技巧。
考虑这么国外的资源,国内下载时好时慢,所以推荐修改配置指向国内资源,如Maven库可以用开源中国的(连接aliyun和jboss等资源的settings.xml文件可以在我上传资源下载),还有docker的所有镜像在DaoCloud下,他们同时提供了一个Docker Hub加速器工具,可以永久修改docker默认镜像default的资源下载地址(http://get.daocloud.io),而且DaoCloud实时更新官网资源,承诺永久免费,所以广告就打这么多,推荐个人使用。
Spring Boot 特性
1. 快速构建独立Spring应用程序
2. 嵌入式Tomcat,Jetty容器,无需部署WAR包
3. 简化Maven及Gradle配置
4. 尽可能的自动化配置Spring,无代码生成和xml配置
5. 直接植入产品环境下的实用功能,比如度量指标、健康检查及扩展配置等
6. 对主流开发框架和工具链做无配置集成
优点
1. 解决配置繁琐的问题,最大化的实现convention over configuration(约定大于配置);
2. springboot 要解决的问题, 精简配置是一方面, 另外一方面是非常方便的让spring生态圈和其他工具链整合(比如redis, email, elecsearch)
3. 有Pivotal和Netflix这两个干爹罩着, 个人认为SpringBoot(由Pivotal团队提供)前途一片光明(国内的一些大厂其实早就再用了)
缺点
1. 因为刚出不久,文档略少,加上对Spring Boot的auto configuration loading等机制的封装, 给人感觉入门容易,但是如果没有完整学习spring的体系,碰到问题就一脸懵逼。据我所知,很多玩spring boot的人连怎么打开底层包的log都不知道,怎么可能能发现问题呢?比如很多人会碰到启动时不知道框架哪里抽风,会导致系统无法启动,报的错都很神奇,搜完百度和谷歌和stackflow都没解决方案。(后来有人说@DependsOn注解就能搞定,没试过不清楚行不行);
2. 版本迭代速度太快(最近太火了), 一些模块改动很大, 比如 springboot-test的1.3.5 vs 1.4
总结
Spring boot给我的感觉是入门容易,深入难。它实现了我们之前常用的Spring技术,并通过零配置或者说约定大于配置的方式将其集成在一起,方便开发者快速开发应用,这种封装的方式有好有坏,当然操作变简单这是最真实的体验。Boot的诞生依靠的是近几年SOA式的微服务架构的流行,也正是这个原因,他多数应用在微服务中充当个体。