github地址: github.com/hanrx/first…
Spring Boot的优势
Spring Boot在Spring的基础上,做了有利于开发微服务的一些工作。首先,使用Spring Boot后,完全做到了零配置,可以直接以jar包运行,这使得部署启动非常方便;其次,starter的引入使得jar包管理更加智能,我们只需要引入一个相关的starter,Spring Boot就会引入一系列与之相关的jar包,不需要我们自己来引入;最后,Spring Boot的自动配置机制使得整合一些框架非常简单。
下面通过一个简单的入门程序来看一下Spring Boot的基本使用方法。
Spring Boot入门
在搭建项目框架之前,先来看一下使用的开发环境。
JDK版本:1.8.0_73(Spring Boot官方推荐使用1.8及以上)。
Spring Boot版本:1.4.3.RELEASE。 Maven版本:4.0.0。
开发工具:IntellJ IDEA15。
在IDEA中创建了一个Maven项目,项目名为firstboot,项目的代码结构如图2-1所示。
项目框架搭建完成之后,我们来开发第一个hello-world级别的Spring Boot应用。
开发第一个Spring Boot程序
首先来看整个项目的pom.xml文件,该文件内容如下:
对于该文件,有以下几点需要说明。
在标签下通过<java.version>1.8</java.version>指定了所使用的JDK版本为1.8,这是官方推荐的方式。
使用spring-boot-starter-parent作为项目parent,并且指定了Spring Boot的版本为1.4.3.RELEASE,这样firstboot项目就成为了一个标准的Spring Boot项目,也是官方推荐的使用方式。
引入spring-boot-starter-web的依赖之后,整个项目会自动引入tomcat和spring-webmvc等相关包,以支持全栈的Web开发。不需要指定该依赖的版本,因为已经在spring-boot-starter-parent中对version进行了指定。
最后,引入了spring-boot-maven-plugin插件,强烈推荐在一个Spring Boot项目中引入该插件,该插件会对Maven生成的jar包进行二次打包,打成一个fat-jar包之后,我们就可以直接使用“java -jar xxx.jar”来运行服务了,非常方便。
在创建好pom.xml文件之后,根据图2-1,又创建了一个com.iafoot.firstboot包,在该包下创建一个FirstbootApplication.java类。该类的代码如下:
FirstbootApplication.java被称为主类或启动类,是整个Spring Boot项目的启动入口。包含一个main方法,而且整个应用中只能有一个main方法,否则,启动会报错。在主类上需要添加注解@SpringBootApplication,该注解是一个复合注解,其包含的比较重要的注解是以下三个。
@SpringBootConfiguration:该注解也是一个复合注解,其中最重要的注解是@Configuration,指明该类由Spring容器管理。
@EnableAutoConfiguration:该注解用于启动服务的自动配置功能。 @ComponentScan:该注解用于扫描类,其作用类似于Spring中的context:component-scan标签。
firstboot项目的项目名与aritfactId相同,并且在firstboot项目下有一个路径最短的包com.iafoot.firstboot,该包名正好是.并且主类就位于该最短路径包下!注意,这不是偶然,这是企业使用Spring Boot构建项目的最标准的做法。使用.作为最短路径包名,不仅语义明确,而且也方便我们写maven-archetype,而将主类放在最短路径包下,主要是为了方便@ComponentScan扫描整个项目中的类。
下面,我们定义一个简单的controller,代码如下:
除了上述文件外,在图2-1中还有一个application.properties文件,该配置文件是Spring Boot默认读取配置信息的地方,此处不做配置。
运行Spring Boot项目
Spring Boot程序的运行主要有以下两种方式。
- 第一种是使用man install打成jar包,之后使用java -jar运行该jar包(通常在线上部署运行服务的时候使用该方式)。
- 第二种是使用mvn spring-boot:run运行jar包(通常在本地IDE中进行调试的时候使用该方式)。
程序启动成功后,就会在控制台输出如图2-2所示的两行日志,从第一行可以看出Tomcat的启动port,第二行是Spring Boot启动成功的标志。这里还给出了项目启动所花费的时间。
程序启动之后,在浏览器中输入 http://localhost:8080/firstboot/sayHello ,输出 hello,this is my first boot program!!!,则程序运行成功!!!
使用Maven依赖树验证Spring Boot自动引包功能
从上述依赖树可以看出,引入一个web-starter后,Spring Boot自动为我们引入了下面几方面的jar包。
第一个是spring-boot-starter,该jar包下包含自动配置的jar,Logback、SLF4J的jar及spring-core。Logback是Spring Boot默认使用的日志框架,我们在Spring Boot程序中使用它的时候,需要在src/main/resources下添加一个logback.xml文件,该文件内容如下:
第二个是spring-boot-starter-tomcat,主要引入一系列tomcat相关的包。 第三个是hibernate-validator。 第四个是jackson,引入springmvc默认使用的json框架。 第五个是spring-web和spring-webmvc。