• 第一章 第一个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、首先进入一个文件夹,建立一个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.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.xml的parent设为spring-boot-starter-parent(没有做过验证,但是感觉可行)
    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

    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的合体,可以直接返回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下的文件:

    后边那一个包是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-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,该怎么配置?

    解决方案:

    加入以下代码即可。

     1 <dependencyManagement>
     2         <dependencies>
     3             <dependency>
     4                 <!-- Import dependency management from Spring Boot -->
     5                 <groupId>org.springframework.boot</groupId>
     6                 <artifactId>spring-boot-dependencies</artifactId>
     7                 <version>1.2.5.RELEASE</version>
     8                 <type>pom</type>
     9                 <scope>import</scope>
    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.0</modelVersion>
     6 
     7     <groupId>com.xxx</groupId>
     8     <artifactId>myboot</artifactId>
     9     <version>1.0-SNAPSHOT</version>
    10 
    11     <!-- 引入spring-boot-starter-parent做parent是最好的方式, 但是有时我们可能要引入我们自己的parent,此时解决方式有两种: 
    12         1)我们自己的parent的pom.xml的parent设为spring-boot-starter-parent(没有做过验证,但是感觉可行) 2)使用springboot文档中的方式:见spring-boot-1.2.5-reference.pdf的第13页 -->
    13     <!-- <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> 
    14         <version>1.2.5.RELEASE</version> </parent> -->
    15 
    16     <dependencyManagement>
    17         <dependencies>
    18             <dependency>
    19                 <!-- Import dependency management from Spring Boot -->
    20                 <groupId>org.springframework.boot</groupId>
    21                 <artifactId>spring-boot-dependencies</artifactId>
    22                 <version>1.2.5.RELEASE</version>
    23                 <type>pom</type>
    24                 <scope>import</scope>
    25             </dependency>
    26         </dependencies>
    27     </dependencyManagement>
    28 
    29     <!-- 引入实际依赖 -->
    30     <dependencies>
    31         <dependency>
    32             <groupId>org.springframework.boot</groupId>
    33             <artifactId>spring-boot-starter-web</artifactId>
    34         </dependency>
    35     </dependencies>
    36 
    37     <build>
    38         <plugins>
    39             <!-- 用于将应用打成可直接运行的jar(该jar就是用于生产环境中的jar) 值得注意的是,如果没有引用spring-boot-starter-parent做parent, 
    40                 且采用了上述的第二种方式,这里也要做出相应的改动 -->
    41             <plugin>
    42                 <groupId>org.springframework.boot</groupId>
    43                 <artifactId>spring-boot-maven-plugin</artifactId>
    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"也成功了,这里有知道的给解释一下?与官方文档不一样啊

  • 相关阅读:
    笔记:Maven 聚合和继承
    笔记:Maven 仓库和插件配置本机私服
    笔记:Maven 插件配置
    笔记:Maven 仓库及配置详解
    笔记:Maven 插件及配置详解
    笔记:Maven 依赖及配置详解
    笔记:Maven 项目基本配置
    【问题解决方案】Mathtype中丢失Mplugin.dll的问题
    【学习总结】Python-3-字符串函数-strip()方法
    【学习总结】Python-3-字符串函数split()的妙用
  • 原文地址:https://www.cnblogs.com/jian-xiao/p/6015505.html
Copyright © 2020-2023  润新知