哈哈,又来到这个时刻啦。鄙人怀着激动而颤抖的心情,在吃饱了撑的时候,在心情饱满而又略显疲惫的时候,能够花上几个小时,来把自己所知道的知识,和大家分享,真的是太高兴啦,呵呵哈哈哈(请让我笑一会儿)。咳咳,好了不废话了,进入话题;
鄙人从接触到SpringBoot到使用,大概有2年多了,在这两年中,遇到的,和看到,都会提到,一步一步的来;首先,介绍一下SpringBoot。
一、初识SpringBoot
SpringBoot是全新的框架,目的就是为了简化Spring应用,以前的各种XML,是不是很痛,使用SpringBoot就可以没有配置文件,做到零配置文件,但是,如果你确实要用,还是可以的;使用SpringBoot,可以快速搭建应用,可以在SpringBoot官网看看,瞧一瞧,买不买就随便你了。
整理一下SpringBoot的优点:
1)、快速构建项目;
2)、对主流的框架可以做到无缝集成,如:Dubbo,SpringClude
3)、项目可以独立的运行,使用jar或者是war,一键运行,为啥(后面介绍);
4)、提供运行监控;
5)、云计算集成
好是好,但是,还是有一些不好的地方,下面找一些瑕疵给大家:
1)、和Spring有关系,如果你不用Spring的话,请出门左拐,不送;
2)、找问题难,说实话,高度集成,问题不容易解决(可能是我水平不够。)
对于瑕疵2,我深刻体会有两次,第一次就是文件上传,需要上传大量数据,就是要报错,各种解决方案都没法,卡了一个月,没有吃好,睡好。还有一个近期的一个集成SpringJpa的功能,很简单,就是起不起来,查阅各种资料都没解。
二、搭建SpringBoot应用
现在开始搭建SpringBoot应用,可以参考官网的教程 http://start.spring.io,其实很简单的,这儿有一个傻瓜式的创建方式,下载下来解压,导入Maven项目就可以了,确实很傻,还有一种就是自己编写,来动起手来,动手不动脚。
第一步,环境变量,工具准备好,Java,IDEA,Maven(Gradle)上手就来,这些不讲解了哈,我遇到过的教程都是一步到位,中间我看着就傻逼了。
第二布,打开Idea,创建一个Maven工程,跟着我做:
下一步就是选择你需要创建的SpringBoot的工程的名字和地址了,看着办,创建出来是这样的:
好了,到这儿就创建了一个Maven项目了,现在集成SpringBoot,请参考其他人的博客,反正就是很简单,出来的效果是这样的
其中Maven的配置是这样的
好,现在右键启动就可以了,在浏览器地址栏输入:http:127.0.0.1:8080/spring/home就可以看到数据了
到现在为止,已经搭建好了一个SpringBoot的项目,是不是很简单?
三、SpringBoot进阶
进阶都是要打小怪兽的,第一步,已经可以创建一个简单的SpringBoot项目,现在让我们来窥探一下里面的功能;
1、SpringBoot的核心SpringbootApplication
这是SpringBoot的入口类,是一个main方法,这个方法是一个额标准的Java应用的入口,通过SpringBootApplication.run(args)启动,看一下@SpringBootApplication这个注解
这是一个组合注解,综合了很多注解,这些注解就不一一讲解了,重要的可以说一下:
@EnableAutoConfiguration 这个注解是让SpringBoot 根据路径中的jar包依赖为当前项目进行自动配置,实际上就是一些约定俗成的配置
@ComponentScan这个配置,有这个配置,就可以扫描同Main统计目录下的所有注解,SpringBoot可以做到无XML配置,最多的就是使用注解做了XML的工作。
这里面还可以做一些其它的操作,比如配置端口,关闭一些特定的配置等等。
还有最最重要的是SpringBoot的默认的配置文件application.properties这个文件,这个文件可以改变SpringBoot的一些默认的配置,比如说端口等等,可以查阅相关的资料
2、SpringBoot的Web访问
对于SpringBoot的Web访问,我们需要把静态的页面放到目录/resource/目录下,然后在application.properties文件中配置如下:
这儿,是集成了SpringMVC的一些功能,目录结构如下:
然后需要集成WebMvcConfigurerAdapter,我们自己接管SpringMVC,代码如下
好了,还需要配置路径,请求的路径,不要忘记了
看我的注释,我把@EnableWebMvc注释了,为啥,因为这个的优先级更高,有这个注释,SpringBoot就会使用默认的配置,我们接管的就没有效果,
启动起来可以看到:
回到上一个点,为啥SpringBoot可以独立运行,是因为SpringBoot内置了tomcat和jetty容器,直接启动起来就可以了,为啥第一个例子端口号是8080,这是tomcat默认的端口号,是不是有一种妈妈的味道?
3、Spring数据访问SpringData
SpringData 包含大量关系型数据库以及一些非关系型数据库的数据访问解决方案
Spring Data Commons 在使用关系型数据库或者是非关系型数据库访问技术都使用基于Spring的统一解决方案,包括CRUD,查询,分页,排序等等操作;
Spring Data Commons一个重要的概念是:Spring Data Repository统一接口:
}
Spring JPA 是一个基于O/R映射的标准规范,规范,就是定义需要啥,然后自己去实现。
实现Jpa访问数据层,需要定义一个JapRepository的接口,然后开启@EnableJpaRepositories注解,以便Spring 对Data Jpa的支持来看配置:
这样就开启了JPA对数据库的访问,其他的配置有application.properties:
然后就是创建实体,定义Dao,Service,Controller,然而问题出来了,这个坑我还在里面,没有出来,所以我写不下去啦,就此打住,我还需要去查询一下资料才行,我会把我解决问题的结果和方法贴出来;
最后,学习是一个长期的过程,鄙人也在这条路上苦苦的寻求,希望可以得到大家的帮助,一起讨论交流学习,谢谢。会持续更新当前博客,后期的功能将会持续更新,如遇问题,可以项目交流。