前言

公司项目用到了Springboot,于是啥都不会的我就得从Spring开始重新学起了。搞笑的是,以前一个学期都没看懂的SSM,在公司自己搜文档看一会就上手了,当然也没有多深入,文档的话还是抽象得可怕啊。以前看这些框架确实是挺不理解的,写个hello world都要配置这配置那,搞了一大堆东西之后才开始写正事,还一个劲的说简单,简单个屁。不过之后参加了公司关于设计模式的培训,每天上班挤地铁都看看相关的资料,对Spring理解更深了一些,不过这也是后话了。

SpringBoot

我的理解吧,Springboot就是个简洁的Spring,配置非常方便,而且可以自动配置bean,对其他框架的整合也做的相当不错。英语好的可以去看看官方文档

要快速上手Springboot,需要一些基础:

  • 理解Spring
  • 会用Maven

下面进入正题。

快速上手

我们可以通过两种方式快速搭建一个Springboot项目(这里用的第二种)。

  • start.spring.io上选择相应的配置,下载一个空的项目包,然后用IDE打开
  • 用Intellij IDEA直接New -> Project -> Spring Initializr -> 填好项目名等信息 -> 选择项目需要用到的依赖 -> 选本地项目location -> Finish

之后项目会自动构建了下面的文件结构:

├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── example
    │   │           └── demo
    │   │               └── DemoApplication.java
    │   └── resources
    │       ├── application.properties
    │       ├── static
    │       └── templates
    └── test
        └── java
            └── com
                └── example
                    └── demo
                        └── DemoApplicationTests.java

这里要注意三个文件:

  • pom.xml
  • application.properties
  • DemoApplication.java

pom.xml:
这里的pom在项目建好之后已经写好了依赖。要注意的是,这里的Springboot项目添加的依赖例如MySQL、MyBatis、Redis等(即是依赖的artifactID形如spring-boot-starter-*),都是Springboot对其有所整合的,几乎所有配置都可以在Springboot配置(Application.properties)中填写,如果像普通的项目一样在Maven中引用普通的依赖,就没这么方便了。

application.properties:
其实就是Springboot的配置文件,就是相当于Spring中那一大坨一大坨的xml配置文件,这个application.properties除了可以配置Spring,对于添加了Springboot整合的依赖的其他框架也同样可以配置。
例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#tomcat start
server.compression.enabled=true
server.port=8081
#tomcat end

#redis start
spring.redis.database=0
spring.redis.host=localhost
spring.redis.port=6379
#redis end

#multipart start
spring.http.multipart.enabled=true
spring.http.multipart.max-file-size=10MB
spring.http.multipart.max-request-size=10MB
#multipart end

#mysql start
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
#mysql end

#mybatis start
mybatis.configuration.cache-enabled=true
mybatis.configuration.lazy-loading-enabled=true
mybatis.configuration.multipleResultSetsEnabled=true
#mybatis end

其中每个属性都是什么意思,这里就不赘述了,自行搜索吧。

DemoApplication.java:
每个Springboot项目都会有这种一个xxxApplication.java的入口程序,其中标注了@SpringbootApplication注解,这个注解其实就是组合了@SpringBootConfiguration、@EnableAutoConfiguration以及@ComponentScan。这里只需要知道,Springboot的牛逼之处就是自动配置bean,相当于省去了Spring配置扫描包的一步。但是Server和Controller等需要配置bean的类所在的包要与这个入口同级或者下级,Springboot才会自动扫描配置,当然,相应的@Server和@Controller等注解也是不可少的。因为其中的@ComponentScan注解是有一个过滤器的,如果我们只想要@SpringBootApplication去扫描特定的类而不是全部类,可以这么写:

1
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

Springboot大概就是在以上的一些地方对Spring烦死个人的配置进行了优化,学起来用起来也不那么吃力了。除了这些方面,Springboot对于其他整合的框架诸如SpringMVC、Mybatis也做了一些优化,这些之后有空再介绍了。

有趣一点

Springboot项目启动的时候,会在控制台会显示一个Spring字样的Banner。
banner1
这个Banner是可以更改的,只要编写一个banner.txt,在里面添加上自己的banner,放到resources文件夹下就可以。其中的样式可以在http://patorjk.com/software/taag里编辑。
banner2
对这个感兴趣的也可以到mythsman大佬的博客了解一下

缺点

  • 由于这个框架比较新,因此很多组件都需要java8的支持,并且如果以后发布到服务器上,也需要Tomcat8的支持,这一点需要尤其的注意。
  • 用了就戒不掉了。