Web开发

注册

 

发新话题 回复该主题

京东首推神级SpringBoot学习文 [复制链接]

1#
白癜风有什么偏方 http://pf.39.net/bdfyy/bdflx/150921/4699279.html

SpringBoot要如何学习?

当学习一门技术时,我们要提前弄明白几个问题,

它是什么?为什么学?怎么样学?下面,我就从这3个方面来介绍一下SpringBoot。SpringBoot是什么?介绍SpringBoot之前需要简短的介绍一下Spring,因为它们是承前启后的关系,SpringBoot是发展自Spring的基础上,如果不明白Spring就贸然介绍SpringBoot会觉得云里雾里。Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。举个例子,它就类似于tensorflow之于机器学习,如果没有Spring,我们同样可以使用JavaEE完成一项功能的开发,但是Spring的出现使JAVAEE开发更加容易。Spring的核心包括2个概念:控制反转(IOC)和面向切面(AOP)。而SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。为什么学SpringBoot?前面简单的介绍了一句,SpringBoot的设计目的是为了简化Spring应用。那也就是说SpringBoot是为了解决Spring的弊端而出现的,所以,这个问题又回到了Spring上面。既然Spring不好用,那么不学不就行了?为什么还要重新设计出一个SpringBoot?这里就需要首先了解一下为什么学习Spring?下面通过一个简单的例子来说明一下。假设一个场景:目前有三个角色,买水果的人(用户),卖水果的人(业务层),水果(持久化层),

先写一个接口,publicinterfaceFruit{publicvoidget();}现在实现3种水果的类,为了方便展示,把它们先写在一起,//Apple.javapublicclassAppleimplementsFruit{publicvoidget(){System.out.println(getanapple);}}//Orange.javapublicclassBananaimplementsFruit{publicvoidget(){System.out.println(getabanana);}}//Banana.javapublicclassOrangeimplementsFruit{publicvoidget(){System.out.println(getaorgane);}}现在实现一个业务层,也就是从3个水果类中获取水果,//UserService.javapublicclassUserService{privateFruitfruit=newApple();publicvoidgetFruit(){fruit.get();}}然后,实现一个用户类,//User.javapublicclassUser{publicstaticvoidmain(String[]args){UserServiceuser=newUserService();user.getFruit();}}上述就是我们实现一个程序的惯用方式,这样看上去没有什么问题,目前我们调用业务层UserService获取到苹果,那么试想一下,如果现在我想获取橘子怎么办?这样就需要修改业务层代码,//UserService.javapublicclassUserService{privateFruitfruit=newOrange();publicvoidgetFruit(){fruit.get();}}也许很多同学会认为这样没什么问题,那就修改一下业务层代码啊?显然,这不是一个优秀的程序员做的事情,每当用户需求做出改变时,我们的代码都要做出相应的修改,那么有两个问题,如果工程量较大,修改的内容较多怎么办?如果我们修改代码对其他业务造成影响怎么办?所以,一个好的设计思路就应该在不改变原代码的基础上实现我们想要的功能。那么,接下来就应该转变思维,考虑一下,目前的控制权在业务层,所以每次用户需求改变时,业务层也要跟着改变,既然这样,我们把控制权交给用户不就行了吗?下面来修改一下业务层的代码实现控制权的转换,publicclassUserService{privateFruitfruit;publicvoidsetFruit(Fruitfruit){this.fruit=fruit;}publicvoidgetFruit(){this.fruit.get();}}细心的同学应该可以看得出改变,我在加了一个set方法,使得用户层可以注入不同的对象,这样我们在用户层传入哪个对象,就会获得哪个结果,//1.获取橘子publicclassUser{publicstaticvoidmain(String[]args){UserImpluser=newUserImpl();user.setFruit(newOrange());//在这里注入对象user.getFruit();}}//2.获取香蕉publicclassUser{publicstaticvoidmain(String[]args){UserImpluser=newUserImpl();user.setFruit(newBanana());user.getFruit();}}现在来总结一下,经过改变前后到底发生了什么,

上图展示的很明确,就是控制权的反转,之前主动权在业务层,每次用户提出需求业务层就需要跟着做出改变,现在我们把主动权交给了用户,它传进什么,就得到什么样的结果,这样业务代码就不用跟着改变了。这就是IOC(控制反转)的核心思想。IOC就是Spring中两个主要的概念之一,另外一个就是AOP(面向切面),它的主要思路应用动态代理,这里不详细展开。读到这里就应该明白,我们在学习Python、Java、C++等编程语言的过程中,都会接触到运算符、变量类型、循环、条件、面向对象这些语法,而SpringBoot是高于这些语法之上,更高一层的思维方式的转变。Spring并不像我们所学的基本语法那样的固定知识点一样,它是一种思维方式,通过这种思维方式的转变能够让项目开发更加简洁高效,这就是Spring的主要优点之一。前面通过长篇大论介绍了Spring的核心和优点,那么现在来说一下它的缺点。Spring在组件注入和装配过程中需要大量的配置,那么,随着项目的增大,那么就需要很多庞大的配置项,显然,这与Spring的初衷是相悖的。所以,SpringBoot就以“习惯优于配置”的理念在Spring的基础上扩展而来,它不仅继承了Spring的优点,还实现了自动配置Spring,进一步简化了开发过程,这就是SpringBoot的优点之一,当然,它还有诸多其他优点,例如,创建独立的Spring应用程序嵌入的Tomcat,无需部署WAR文件简化Maven配置自动配置Spring提供生产就绪型功能,如指标,健康检查和外部配置绝对没有代码生成和对XML没有要求配置怎么样学?前面只是介绍了一下Spring中的一个重要概念IOC的本质和Spring、SpringBoot的优点,明确了它是什么?为什么学?这两个问题,那么接下来就来到了最后一个问题,怎么样学?我所介绍的只是九牛一毛,SpringBoot包含很庞大的体系,有很多值得学习的,所以,如果真正对Java开发感兴趣的,我认为需要系统详细地学习一下。由于我对于Spring和SpringBoot也不是特别深入,只是之前开发前后端时用到了Vue和SpringBoot,所以就不班门弄斧,这里是我推荐的一本不错的书。先给大家展示一下目录

由于篇幅原因,小编只展示了部分内容,如果觉得这份资料对于你们来说有用的话,有需要的朋友见文末!内容SpringBoot入门

SpringBoot整合Web开发

SpringBoot缓存

消息服务

微人事项目实战

末尾这份资料是前段时间我空闲时间找资料看到的,之前本来对于看书籍教程并没有太大兴趣,因为我性子比较急,所以,当学习一门知识时我更喜欢看在线教程,这样的话我可以自己控制速度,但是,当抱着尝试一下的心态看了这份SpringBoot教程之后我发现写的实在太好了,从浅入深,环环相扣,每一步都会对照着官方文档结合作者自己的见解进行讲解,同时也会编码实现,理论与实践相结合。它不像大多数教程或者博客那样,蜻蜓点水,直接告诉你这个东西怎么用,让你只知道如何使用但是却不知道为什么这样使用,而上述这份资料则不然,简直就是理论与实战相结合!有需要的朋友帮小编转发之后加个

分享 转发
TOP
发新话题 回复该主题