spring boot注解及启动过程
Posted haozi_ncepu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot注解及启动过程相关的知识,希望对你有一定的参考价值。
转自http://blog.csdn.net/isea533/article/details/50278205点击打开链接
Spring Boot 入门
spring Boot是Spring社区较新的一个项目。该项目的目的是帮助开发者更容易的创建基于Spring的应用程序和服务,让更多人的人更快的对Spring进行入门体验,让Java开发也能够实现Ruby on Rails那样的生产效率。为Spring生态系统提供了一种固定的、约定优于配置风格的框架。
Spring Boot具有如下特性:
- 为基于Spring的开发提供更快的入门体验
- 开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需求。
- 提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。
- Spring Boot并不是不对Spring功能上的增强,而是提供了一种快速使用Spring的方式。
Spring Boot 系列
本文根据官方文档深入讲解一段代码
简单例子
Spring Boot建议使用Maven或Gradle,本文以Maven为例。
首先创建一个一般的Maven项目,有一个pom.xml和基本的src/main/java
结构。
在pom.xml
中写上如下内容:
- 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
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 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
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
首先是增加了<parent>
增加父pom比较简单,而且spring-boot-starter-parent
包含了大量配置好的依赖管理,在自己项目添加这些依赖的时候不需要写<version>
版本号。
使用父pom虽然简单,但是有些情况我们已经有父pom,不能直接增加<parent>
时,可以通过如下方式:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
java.version属性
上面pom.xml虽然没有出现这个属性,这里要特别提醒。
Spring默认使用jdk1.6,如果你想使用jdk1.8,你需要在pom.xml
的属性里面添加java.version
,如下:
- 1
- 2
- 3
- 1
- 2
- 3
添加spring-boot-starter-web依赖
Spring通过添加spring-boot-starter-*
这样的依赖就能支持具体的某个功能。
我们这个示例最终是要实现web功能,所以添加的是这个依赖。
更完整的功能列表可以查看:using-boot-starter-poms
添加spring-boot-maven-plugin插件
该插件支持多种功能,常用的有两种,第一种是打包项目为可执行的jar包。
在项目根目录下执行mvn package
将会生成一个可执行的jar包,jar包中包含了所有依赖的jar包,只需要这一个jar包就可以运行程序,使用起来很方便。该命令执行后还会保留一个XXX.jar.original
的jar包,包含了项目中单独的部分。
生成这个可执行的jar包后,在命令行执行java -jar xxxx.jar
即可启动项目。
另外一个命令就是mvn spring-boot:run
,可以直接使用tomcat
(默认)启动项目。
在我们开发过程中,我们需要经常修改,为了避免重复启动项目,我们可以启用热部署。
Spring-Loaded
项目提供了强大的热部署功能,添加/删除/修改 方法/字段/接口/枚举 等代码的时候都可以热部署,速度很快,很方便。
想在Spring Boot
中使用该功能非常简单,就是在spring-boot-maven-plugin
插件下面添加依赖:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
添加以后,通过mvn spring-boot:run
启动就支持热部署了。
注意:使用热部署的时候,需要IDE编译类后才能生效,你可以打开自动编译功能,这样在你保存修改的时候,类就自动重新加载了。
创建一个应用类
我们创建一个Application
类:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
注意
Spring Boot建议将我们main
方法所在的这个主要的配置类配置在根包名下。
类似如下结构:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
在Application.java
中有main
方法。
因为默认和包有关的注解,默认包名都是当前类所在的包,例如@ComponentScan, @EntityScan, @SpringBootApplication
注解。
@RestController
因为我们例子是写一个web应用,因此写的这个注解,这个注解相当于同时添加@Controller
和@ResponseBody
注解。
@EnableAutoConfiguration
Spring Boot建议只有一个带有该注解的类。
@EnableAutoConfiguration
作用:Spring Boot会自动根据你jar包的依赖来自动配置项目。例如当你项目下面有HSQLDB
的依赖时,Spring Boot会创建默认的内存数据库的数据源DataSource
,如果你自己创建了DataSource
,Spring Boot就不会创建默认的DataSource
。
如果你不想让Spring Boot自动创建,你可以配置注解的exclude
属性,例如:
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
@SpringBootApplication
由于大量项目都会在主要的配置类上添加@Configuration,@EnableAutoConfiguration,@ComponentScan
三个注解。
因此Spring Boot提供了@SpringBootApplication
注解,该注解可以替代上面三个注解(使用Spring注解继承实现)。
home等方法
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
这些方法都添加了@RequestMapping("xxx")
,这个注解起到路由的作用。
Spring Boot启动过程
springboot快速入门及@SpringBootApplication注解分析