你的位置:首页 > Java教程

[Java教程]第一章 第一个spring boot程序


环境:

  • jdk:1.8.0_73
  • maven:3.3.9
  • spring-boot:1.2.5.RELEASE(在pom.

注意:关于spring-boot的支持,

  • 最少使用jdk7(jdk6也可以,可能需要额外配置,没试过,官方推荐jdk8)
  • maven至少使用3.2

1、首先进入一个文件夹,例如"~/Desktop/project",然后按照"第一章 企业项目开发--maven+springmvc+spring+mybatis+velocity整合"所说的手工建立一个maven工程,其中的pom.

 1 <??> 2 <project ="http://maven.apache.org/POM/4.0.0" ="http://www.w3.org/2001/ 3   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4  5   <modelVersion>4.0.0</modelVersion> 6  7   <groupId>com.xxx</groupId> 8   <artifactId>myboot</artifactId> 9   <version>1.0-SNAPSHOT</version>10 11   <!-- 12      引入spring-boot-starter-parent做parent是最好的方式,13      但是有时我们可能要引入我们自己的parent,此时解决方式有两种:14      1)我们自己的parent的pom.15      2)使用springboot文档中的方式:见spring-boot-1.2.5-reference.pdf的第13页16   -->17   <parent>18     <groupId>org.springframework.boot</groupId>19     <artifactId>spring-boot-starter-parent</artifactId>20     <version>1.2.5.RELEASE</version>21   </parent>22 23   <!-- 引入实际依赖 -->24   <dependencies>25     <dependency>26       <groupId>org.springframework.boot</groupId>27       <artifactId>spring-boot-starter-web</artifactId> 28     </dependency>29   </dependencies>30 31   <build>32     <plugins>33       <!-- 34         用于将应用打成可直接运行的jar(该jar就是用于生产环境中的jar)35         值得注意的是,如果没有引用spring-boot-starter-parent做parent,36         且采用了上述的第二种方式,这里也要做出相应的改动37       -->38       <plugin>39         <groupId>org.springframework.boot</groupId> 40         <artifactId>spring-boot-maven-plugin</artifactId>41       </plugin>42     </plugins>43   </build>44 </project>

View Code

之后,使用"mvn clean compile"成功后,引入eclipse,具体的方式见:第一章 企业项目开发--maven+springmvc+spring+mybatis+velocity整合

 

2、引入eclipse中的工程结构如下:

之后,创建红框部分。

FirstBoot:

 1 package com.xxx.firstboot; 2  3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 5 import org.springframework.web.bind.annotation.RequestMapping; 6 import org.springframework.web.bind.annotation.RestController; 7  8 /** 9  * @RestController:spring mvcd的注解,10  * 相当于@Controller与@ResponseBody的合体,可以直接返回json11  *12  * @EnableAutoConfiguration:spring boot的注解13  * 是无配置启动的关键部分14 */15 @RestController16 @EnableAutoConfiguration17 public class FirstBoot {18   19   @RequestMapping("/hello")20   public String testFirstMethod(){21     return "Hello jigang!!!";22   }23   24   /**25    * spring boot的入口,在整个项目中,包括其子项目在内,26    * 只能有一个main方法,否则spring boot启动不起来27   */28   public static void main(String[] args) {29     SpringApplication.run(FirstBoot.class, args);30   }31   32 }

View Code

解释:

  • @RestController:spring mvc的注解,相当于==>@Controller+@ResponseBody+启动json转换器注解,可以直接返回json
  • @EnableAutoConfiguration:spring boot的注解,是无

  • main方法:spring boot的入口,在整个项目中,包括其子项目在内,只能有一个main方法,否则spring boot启动不起来
    • 注意:关于run方法的第一个参数,不适用全类名也行,推荐使用全类名

 

3、启动spring boot

首次启动,采用"mvn spring-boot:run"(会下载一些东西),之后启动直接在主类(含有main方法的类)上"run as-->java application"即可

当看到console输出以下的信息时,表示启动spring-boot成功,

之后在浏览器输入路径"http://localhost:8080/hello",输出信息"Hello jigang!!!",则成功!!!

注意:

在我们输入路径访问资源的时候,console输出如下信息:

也就是说在此时才初始化了springMVC的dispatcherServlet。

 

4、打包成可执行的jar,该jar将是在生产环境下可用的jar

生产jar的过程依赖于引入的spring-boot-maven-plugin.jar。

执行"mvn package",查看target下的文件:

后边那一个包是maven自己打的,前边那个是spring-boot自己又基于后边那个重新打包了(repackage)

注意:如果没有使用spring-boot-starter-parent做parent(看pom.

 

说明:

在没有引入spring-boot-starter-web.jar之前,查看依赖树:

引入spring-boot-starter-web.jar之后,查看依赖树:

实际上,spring-boot-starter-web.jar这个jar引入5各方面的jar:

  • spring-boot的启动jar:spring-boot-starter.jar
  • tomcat相关jar(spring-boot-1.2.5-->tomcat8)
  • jackson
  • hiberbate-validator
  • spring相关jar(spring-boot-1.2.5-->spring4.1)

 



遗留了两个问题:

1)若不采用spring-boot-starter-parent做parent,该怎么配置?

2)若不采用spring-boot-starter-parent做parent,打包插件spring-boot-maven-plugin该怎么配置?