转载知乎文章
推荐以 Spring Boot 教程与 Spring Cloud 教程的详细开源项目 “SpringBoot-Learning” 此项目内容为 Spring Boot 教程程序样例,对于 Spring Boot 的初学者来说非常有用,文末也列出了Spring 相关开源项目,供大家交流学习。
1. SpringBoot-Learning 部分样例:
快速入门
工程配置
Web开发
数据访问、日志管理等等,项目地址:程序猿DD/SpringBoot-Learning - 码云 Gitee.com
2. 项目名称:spring boot 实践学习案例 springboot-learning-example
项目结构:
a. 『 基础 - 入门篇 』
b. 『 基础 - Web 业务开发篇 』
c. 『 基础 – 数据存储篇 』
d. 『 基础 – 数据缓存篇 』
e. 『 其他篇 』
Spring Data ES 篇
项目地址:泥沙砖瓦浆木匠/springboot-learning-example - 码云 Gitee.com
Spring 相关项目推荐:
1. 项目名称:基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构
项目内容:基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等,支持服务治理、监控和追踪,努力为中小型企业打造全方位J2EE企业级开发解决方案。
项目地址:shuzheng/zheng - 码云 Gitee.com
2. 项目名称:模块化开发系统 ybg-spring-fast
项目简介:以SpringBoot 为中心,模块化开发系统,用户可以随意删减除权限框架外 任意的系统模块。复用,组装性强主要应用技术:spring Security+Ehcache+quartz+swagger2+Mysql5.6+springjdbc+druid+spring social+spring session + layerui+vue.js等。
项目地址:YYDeament/ybg-spring-fast - 码云 Gitee.com
3. 项目名称:JAVA分布式快速开发平台 iBase4J
项目内容:JAVA分布式快速开发平台:SpringBoot,SpringMVC,Mybatis,mybatis-plus,motan/dubbo分布式,Redis缓存,Shiro权限管理,Spring-Session单点登录,Quartz分布式集群调度,Restful服务,QQ/微信登录,App token登录,微信/支付宝支付;日期转换、数据类型转换、序列化、汉字转拼音、身份证号码验证、数字转人民币、发送短信、发送邮件、加密解密、图片处理、excel导入导出、FTP/SFTP/fastDFS上传下载、二维码、XML读写、高精度计算、系统配置工具类等等。
项目地址:iBase4J/iBase4J - 码云 Gitee.com
4. 项目名称:Java EE(J2EE)快速开发框架 ThinkGem
项目内容:Java EE(J2EE)快速开发框架,基于经典技术组合(Spring MVC、Apache Shiro、MyBatis、Bootstrap UI),包括核心模块如:组织机构、角色用户、权限授权、数据权限、内容管理、工作流等。虽说很长时间没有大的更新了,但它的架构精良易于扩展深受大家喜爱,依然是中小企业的首选,它的功能设计、底层架构也非常具有参考意义、是学习入门的首选。关注我ThinkGem开源中国博客了解4.0最新动态。
项目地址:ThinkGem/JeeSite - 码云 Gitee.com
5. 项目名称:Java快速开发平台 MCMS
项目内容:完整开源,Java快速开发平台。基于Spring、SpringMVC、Mybatis架构,MStore提供更多好用的插件与模板(文章、商城、微信、论坛、会员、评论、支付、积分、工作流、任务调度等,同时提供上百套免费模板任意选择),价值源自分享!铭飞系统不仅一套简单好用的开源系统、更是一整套优质的开源生态内容体系。
项目地址:铭飞/MCMS - Gitee
6. 项目名称:基于Spring Cloud微服务化开发平台 AG-Admin
项目内容:AG-Admin是国内首个基于Spring Cloud微服务化开发平台,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。核心技术采用Eureka、Fegin、Ribbon、Zuul、Hystrix、JWT Token、Mybatis等主要框架和中间件,前端采用vue-element-admin组件。
项目地址:老A/AG-Admin - 码云 Gitee.com
7. 项目名称:轻量级的Spring Boot快速开发平台 renren-fast
项目简介:renren-fast是一个轻量级的Spring Boot快速开发平台,其设计目标是开发迅速、学习简单、轻量级、易扩展;使用Spring Boot、Shiro、MyBatis、Redis、Bootstrap、Vue2.x等框架,包含:管理员列表、角色管理、菜单管理、定时任务、参数管理、代码生成器、日志管理、云存储、API模块(APP接口开发利器)、前后端分离等。
项目地址:人人开源/renren-fast - 码云 Gitee.com
来 码云 http://Gitee.com
发现更多优质 开源项目: 最新推荐 - 码云 - 开源中国
让 团队流畅、高效开发: 码云企业版 - 码云 - 开源中国
关于Spring Boot ,曾经因为项目需求,“临阵磨枪”式的学习了 一下,但是,那时候自己使用相对简单,就做一些简单的API接口的开发。所以,就在网络上找了一些在线教程,结合看了一些快速入门的博客,把项目给搭建了起来。当时我找的是这个训练营,是跟着实战做项目,等学完课程,一个项目也就搭建起来了,比只看老师干讲要强很多,大家也可以报名试试。
优质、原创,请关注: https://b23.tv/Sermer
最近由于疫情的原因,在家远程办公有了一些空闲时间,所以,就想着抽空把Spring更加细致的学习一遍。在这个过程中发现了一些不错的免费课程,所以来分享一下我关于Spring Boot 的学习思路,希望能够对有需要的朋友有所帮助。
当学习一门技术时,我们要提前弄明白几个问题,
下面,我就从这3个方面来介绍一下Spring Boot。
Spring Boot是什么?
介绍Spring Boot之前需要简短的介绍一下Spring,因为它们是承前启后的关系,Spring Boot是发展自Spring的基础上,如果不明白Spring就贸然介绍Spring Boot会觉得云里雾里。
Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。举个例子,它就类似于tensorflow之于机器学习,如果没有Spring,我们同样可以使用Java EE完成一项功能的开发,但是Spring的出现使JAVA EE开发更加容易。
Spring的核心包括2个概念:控制反转(IOC)和面向切面(AOP)。
而Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。
为什么学Spring Boot?
前面简单的介绍了一句,Spring Boot的设计目的是为了简化Spring应用。
那也就是说Spring Boot是为了解决Spring的弊端而出现的,所以,这个问题又回到了Spring上面。
既然Spring不好用,那么不学不就行了?为什么还要重写设计出一个Spring Boot?
这里就需要首先了解一下为什么学习Spring?
下面通过一个简单的例子来说明一下。
假设一个场景:目前有三个角色,买水果的人(用户),卖水果的人(业务层),水果(持久化层),
先写一个接口,
public interface Fruit {
public void get();
}
现在实现3种水果的类,为了方便展示,把它们先写在一起,
// Apple.java
public class Apple implements Fruit{
public void get() {
System.out.println("get an apple");
}
}
// Orange.java
public class Banana implements Fruit{
public void get() {
System.out.println("get a banana");
}
}
// Banana.java
public class Orange implements Fruit{
public void get() {
System.out.println("get a organe");
}
}
现在实现一个业务层,也就是从3个水果类中获取水果,
// UserService.java
public class UserService {
private Fruit fruit = new Apple();
public void getFruit() {
fruit.get();
}
}
然后,实现一个用户类,
// User.java
public class User {
public static void main(String[] args) {
UserService user = new UserService();
user.getFruit();
}
}
上述就是我们实现一个程序的惯用方式,这样看上去没有什么问题,目前我们调用业务层UserService
获取到苹果,那么试想一下,如果现在我想获取橘子怎么办?这样就需要修改业务层代码,
// UserService.java
public class UserService {
private Fruit fruit = new Orange();
public void getFruit() {
fruit.get();
}
}
也许很多同学会认为这样没什么问题,那就修改一下业务层代码啊?
显然,这不是一个优秀的程序员做的事情,每当用户需求做出改变时,我们的代码都要做出相应的修改,那么有两个问题,
所以,一个好的设计思路就应该在不改变原代码的基础上实现我们想要的功能。
那么,接下来就应该转变思维,考虑一下,目前的控制权在业务层,所以每次用户需求改变时,业务层也要跟着改变,既然这样,我们把控制权交给用户不就行了吗?
下面来修改一下业务层的代码实现控制权的转换,
public class UserService {
private Fruit fruit;
public void setFruit(Fruit fruit) {
this.fruit = fruit;
}
public void getFruit() {
this.fruit.get();
}
}
细心的同学应该可以看得出改变,我在加了一个set方法,使得用户层可以注入不同的对象,这样我们在用户层传入哪个对象,就会获得哪个结果,
// 1. 获取橘子
public class User {
public static void main(String[] args) {
UserImpl user = new UserImpl();
user.setFruit(new Orange()); //在这里注入对象
user.getFruit();
}
}
//2. 获取香蕉
public class User {
public static void main(String[] args) {
UserImpl user = new UserImpl();
user.setFruit(new Banana());
user.getFruit();
}
}
现在来总结一下,经过改变前后到底发生了什么,
上图展示的很明确,就是控制权的反转,之前主动权在业务层,每次用户提出需求业务层就需要跟着做出改变,现在我们把主动权交给了用户,它传进什么,就得到什么样的结果,这样业务代码就不用跟着改变了。
这就是IOC(控制反转)的核心思想。
IOC就是Spring中两个主要的概念之一,另外一个就是AOP(面向切面),它的主要思路应用动态代理,这里不详细展开。
读到这里就应该明白,我们在学习Python、Java、C++等编程语言的过程中,都会接触到运算符、变量类型、循环、条件、面向对象这些语法,而Spring Boot是高于这些语法之上,更高一层的思维方式的转变。
Spring并不像我们所学的基本语法那样的固定知识点一样,它是一种思维方式,通过这种思维方式的转变能够让项目开发更加简洁高效,这就是Spring的主要优点之一。
前面通过长篇大论介绍了Spring的核心和优点,那么现在来说一下它的缺点。
Spring在组件注入和装配过程中需要大量的配置,那么,随着项目的增大,那么就需要很多庞大的配置项,显然,这与Spring的初衷是相悖的。
所以,Spring Boot就以“习惯优于配置”的理念在Spring的基础上扩展而来,它不仅继承了Spring的优点,还实现了自动配置Spring,进一步简化了开发过程,这就是Spring Boot的优点之一,当然,它还有诸多其他优点,例如,
怎么样学?
前面只是介绍了一下Spring中的一个重要概念IOC的本质和Spring、Spring Boot的优点,明确了它是什么?为什么学?这两个问题,那么接下来就来到了最后一个问题,怎么样学?
我所介绍的只是九牛一毛,Spring Boot包含很庞大的体系,有很多值得学习的,所以,如果真正对Java开发感兴趣的,我认为需要系统详细的学习一下。
但是,我需要强调一点,不要一开始就直接学习Spring Boot,那样的话当看着各种注解、装配、组件......会觉得云里雾里,当不明白的时候又需要逐个的去网络上查找@Autowired、@Component.....是什么概念?这样不仅浪费时间,而且无法深入理解它的原理和来龙去脉。
所以,在学习Spring Boot之前一定先学习Spring。
由于我对于Spring和Spring Boot也不是特别深入,只是之前开发前后端时用到了Vue和Spring Boot,所以就不班门弄斧,这里我推荐一下我之前报过的很不错的课程,从0到1搭建一个完整项目,做完项目,技术点基本上都会的差不多了,而且直接上手,方便总结经验,对以后面试或者工作都有帮助。
感兴趣的可以在哔哩哔哩搜索狂神Java,可以看一下下面这两份免费课程,
其中《Spring5最新完整教程IDEA版》共28讲,《SpringBoot最新教程IDEA版》共59讲,没讲10-20分钟左右,当然,也有个别的在10分钟以内或者超过20分钟。
这两份课程是前段时间我空闲时间在哔哩哔哩看到的,之前本来对于看视频教程并没有太大兴趣,因为我性子比较急,所以,当学习一门知识时我更喜欢看书或者在线教程,这样的话我可以自己控制速度,但是,当抱着尝试一下的心态听了这份Spring教程之后我发现讲的实在太好了,从浅入深,环环相扣,每一步都会对照着官方文档结合作者自己的见解进行讲解,同时也会编码实现,理论与实践相结合。
它不像大多数教程或者博客那样,蜻蜓点水,直接告诉你这个东西怎么用,让你只知道如何使用但是却不知道为什么这样使用,而上述这两份课程则不然,例如,在讲组件的注入和装配时,它会循序渐进,
另外,这两份课程都是2019年10至11月更新的,用的都是比较新的版本和特性,这样可以即学即用。
我在百度网盘也分享了一些Spring方面的视频教程、源代码、笔记,其中包括,SSM、Spring Boot、Spring Cloud,感兴趣的可以阅读我的另一篇文章【 干货 | 2019年共享免费资源整理(上):学习资源篇】查看资源获取方式。
如果我说,从开头开始学,然后丢一堆链接,不知道会不会被打?然而我内心的OS是:打打不到啊达不到!
这个Spring Boot系列算是我看见的比较完整的,通俗易懂的一个系列了,推荐给你们吧!
Spring Boot系列(九):定时任务 Spring Boot系列(八):RabbitMQ详解 Spring Boot系列(七):springboot+mybatis多数据源最简解决方案 Spring Boot系列(六):如何优雅的使用mybatis Spring Boot系列(五):spring data jpa的使用 Spring Boot系列(四):thymeleaf使用详解 Spring Boot系列(三):Spring Boot中Redis的使用 Spring Boot系列(二):web综合开发 Spring Boot系列(一):Spring Boot 入门篇然后送上一个番外篇: springboot实战:我们的第一款开源软件
也欢迎关注我的专栏:极乐科技 - 知乎专栏
专栏里面很多讲Spring Boot使用技巧的文章
老规矩,从概念到干货到拓展~
一、简介
Spring Boot是Spring提供的一套基础配置环境,可以用来快速开发生产环境级别的产品。尤其适合开发微服务架构,省去了不少配置麻烦。比如用到Spring MVC时,只需把spring-boot-starter-web
依赖添加到Maven依赖中即可。另外它还有如下特性:
二、学习资源
【入门-基础】
【入门-缓存】
【入门-实践】
【进阶-Web进阶】
【进阶-实例】
【项目-实战】
实战介绍:深度探讨 Spring Boot 核心特性,体现出了对 Java 规范的重视,启发对技术原理性的思考,掌握排查问题的技能,以及学习阅读源码的方法和技巧,全面提升研发能力,进阶架构师队伍。
2.Spring Boot双版本(1.5/2.1) 打造企业级微信点餐系统
实战介绍:基于微信点餐系统体验敏捷式开发,最小成本迭代升级,可以最小的代价完成旧系统的升级改造,还原企业真实系统重构场景。项目系统采用前后端分离的架构,带你一步步设计并开发一个企业级Java应用。
3.SSM到Spring Boot -从零开发校园商铺平台
实战介绍:该项目运用SSM技术快速迭代出版校园商铺1.0,再结合SSM转型成Spring Boot的思路,切换到校园商铺2.0。同时包含MySQL主从同步实现读写分离,利用SUI Mobile快速实现响应式页面,Redis缓存,数据库加密配置,阿里云部署等实用技术点。
4.Java开发企业级权限管理系统
实战介绍:系统带你运用Java技术栈,打造一套基于最流行的RBAC拓展模型的,分布式的,有界面的,高灵活性,高拓展性的企业级权限管理系统。体验该实战后可轻松应对绝大多数企业开发中与权限管理及后台系统相关的需求。
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。采用 Spring Boot 可以大大的简化你的开发模式,所有你想集成的常用框架,它都有对应的组件支持。
Spring Boot 是一套全新的框架,它来自于 Spring 大家族,因此 Spring 所有具备的功能它都有,而且更容易使用;Spring Boot 以约定大于配置的核心思想,默认帮我们进行了很多设置,多数 Spring Boot 应用只需要很少的 Spring 配置。Spring Boot 开发了很多的应用集成包,支持绝大多数开源软件,让我们以很低的成本去集成其它主流开源软件。
Spring Boot特性
Spring Boot 本身发展特别快,自从2014年4月发布 Spring Boot1.0 之后,版本更新非常频繁,我在16年使用的时候是1.3.X,到现在 Spring Boot 最新稳定版本为:1.5.8,2.0版本也进入了第5个里程碑。Spring Boot一经推出就迅速的成为一门热门的技术,我们从下图也可以看出这个结论:
此图来自于百度指数,从图中可以看出来,自从2015年6月开始,Spring Boot的搜索指数呈稳定大幅增长的趋势,说明大家对Spring Boot的关注度越来越高。
此图截取于Spring Boot的首页,可以看出Spring在官网重点推荐了三个项目,Spring Boot排名第一,可见官方的重视程度。
我的建议是先了解Spring Boot的思想、理念、然后跟着小示例去实践,我这里有一些小示例和文章,最后在送一个Spring Boot开源软件云收藏:favorites.ren
推荐一个Spring Boot的导航网站:Spring Boot 中文导航
Spring boot使用的各种示例,以最简单、最实用为标准
Favorites-web:云收藏(springboot实战开源项目)
参考文章
Spring Boot 实战:我们的第一款开源项目
另外,算法也非常重要,基本上现在的大厂都会看重算法的基础,这里给大家送一本阿里P8大佬的算法笔记:
BAT大佬的刷题笔记,进大厂必看!