第一章 第一个spring boot程序

环境:

  • jdk:1.8.0_73
  • maven:3.3.9
  • spring-boot:1.2.5.RELEASE(在pom.xml中指定了)

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

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

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

 1 xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 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.0modelVersion>
 6 
 7     <groupId>com.xxxgroupId>
 8     <artifactId>mybootartifactId>
 9     <version>1.0-SNAPSHOTversion>
10 
11     
17     <parent>
18         <groupId>org.springframework.bootgroupId>
19         <artifactId>spring-boot-starter-parentartifactId>
20         <version>1.2.5.RELEASEversion>
21     parent>
22 
23     
24     <dependencies>
25         <dependency>
26             <groupId>org.springframework.bootgroupId>
27             <artifactId>spring-boot-starter-webartifactId> 
28         dependency>
29     dependencies>
30 
31     <build>
32         <plugins>
33             
38             <plugin>
39                 <groupId>org.springframework.bootgroupId> 
40                 <artifactId>spring-boot-maven-pluginartifactId>
41             plugin>
42         plugins>
43     build>
44 project>
View Code

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

 

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

第一章 第一个spring boot程序_第1张图片

之后,创建红框部分。

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的合体,可以直接返回json
11  *
12  * @EnableAutoConfiguration:spring boot的注解
13  * 是无配置启动的关键部分
14  */
15 @RestController
16 @EnableAutoConfiguration
17 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的注解,是无xml配置启动的关键部分

  • 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!!!",则成功!!!

 

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

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

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

第一章 第一个spring boot程序_第2张图片

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

注意:如果没有使用spring-boot-starter-parent做parent(看pom.xml的注释),那么打包过程需要作出相应的调整。

 

5、运行打包好的jar

进入myboot文件夹下,执行命令"java -jar target/myboot-1.0-SNAPSHOT.jar",得出如下结果:

之后访问浏览器即可。

 

说明:

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

第一章 第一个spring boot程序_第3张图片

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

第一章 第一个spring boot程序_第4张图片

实际上,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,该怎么配置?

解决方案:

加入以下代码即可。

 1     <dependencyManagement>
 2         <dependencies>
 3             <dependency>
 4                 
 5                 <groupId>org.springframework.bootgroupId>
 6                 <artifactId>spring-boot-dependenciesartifactId>
 7                 <version>1.2.5.RELEASEversion>
 8                 <type>pomtype>
 9                 <scope>importscope>
10             dependency>
11         dependencies>
12     dependencyManagement>
View Code

完整的pom.xml

 1 xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 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.0modelVersion>
 6 
 7     <groupId>com.xxxgroupId>
 8     <artifactId>mybootartifactId>
 9     <version>1.0-SNAPSHOTversion>
10 
11     
13     
15 
16     <dependencyManagement>
17         <dependencies>
18             <dependency>
19                 
20                 <groupId>org.springframework.bootgroupId>
21                 <artifactId>spring-boot-dependenciesartifactId>
22                 <version>1.2.5.RELEASEversion>
23                 <type>pomtype>
24                 <scope>importscope>
25             dependency>
26         dependencies>
27     dependencyManagement>
28 
29     
30     <dependencies>
31         <dependency>
32             <groupId>org.springframework.bootgroupId>
33             <artifactId>spring-boot-starter-webartifactId>
34         dependency>
35     dependencies>
36 
37     <build>
38         <plugins>
39             
41             <plugin>
42                 <groupId>org.springframework.bootgroupId>
43                 <artifactId>spring-boot-maven-pluginartifactId>
44             plugin>
45         plugins>
46     build>
47 project>
View Code

注意:引入的是在dependencyManagement,spring-boot-dependencies的type=pom,scope=import

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

这里采用上边的配置,我直接执行"mvn package"也成功了,这里有知道的给解释一下?与官方文档不一样啊

你可能感兴趣的:(第一章 第一个spring boot程序)