Spring Boot实践 第一章 第一个Spring Boot程序

spring boot 概述

        Spring boot 是什么? 按我自己的理解,它就是一个大杂烩. spring 把很多熟知的框架都糅合在自己的体系内, 经过重新包装后统一了风格和配置。它是这些框架的集合体,简化了Maven依赖配置。

Spring boot 特性:

  1. 简化了配置,spring boot 使用约定大于配置,通过一些约定来大量减少配置。
  2. 独立启动,通过SpringBootApplication 注解配置一个main作为模块的启动入口。
  3. 内嵌tomcat和jetty等容器.
  4. 搭建项目快速便捷.
  5. 使用Spring boot Actuator监控系统应用.
  6. Spring boot 是Spring cloud 微服务框架的基础.

 关于以上特性,我会在后面的章节中通过代码逐一介绍.

 第一个Spring boot 项目 

     使用IDEA创建Spring boot项目有两种方式:

  1. 创建一个maven(或者gradle)工程,在maven(或者gradle)工程中引入spring boot 依赖(这个方法也适用于Eclipse)
  2. 直接创建一个 Spring Initializr 工程, 这个功能需要15以上版本的IDEA支持.

先介绍一下用maven创建spring boot 工程的方式:

        创建工程

         打开IDEA 先创建一个maven的project. 并填写相应的groupId和ArtifactId 

          

           由于我们使用的是实例工程是聚合多module方式, 所以删除掉创建工程中的外层src目录. 创建出来的工程如下图.  

           

           然后再创建一个maven的module.

           

             注意: module的GroupId不能和project的GroupId一样, 最好是继承关系

             

             建立好的工程如下:

             

             此时, project的pom文件的packaging已经变成pom类型的了, 而且外层pom已经包含了第一个module

                

 

            构建spring boot的maven依赖

            在外层pom中添加spring boot的parent.   这里使用了最新版本的spring boot  2.0.0.RELEASE

    <parent>

        <!--spring boot 默认基础配置, 通过继承这个可以获取大部分的默认基础配置-->

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-parent</artifactId>

        <version>2.0.0.RELEASE</version>

    </parent>

 这个parent是spring boot默认的基础配置,它提供了大部分的依赖配置, 添加parent后, 我们后续的所有module都继承了这个依赖,能大大减少每个module的maven配置.如果想对默认配置进行覆盖, 就需要在pom中添加如下配置:

<properties>
    <!--可以对默认配置进行覆盖 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

在这里我们我们覆盖了jdk的默认版本和工程的字符集.  如果想覆盖默认的某个依赖的版本,那就添加如下的配置:

<properties>
        <!--可以对上面的默认配置进行覆盖 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>

        <!-- 将默认的 2.0.0.RELEASE 版本的spring-boot-starter-json 覆盖为1.5.4.RELEASE -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-json</artifactId>
            <version>1.5.4.RELEASE</version>
            <scope>compile</scope>
        </dependency>
</properties>

        至此, 外层POM的简单配置已经完成了. 完整的配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.learning</groupId>
    <artifactId>spring-boot-learning</artifactId>
    <packaging>pom</packaging>
    <version>1.0</version>
    <modules>
        <module>demo_1</module>
    </modules>

    <parent>
        <!--spring boot 默认基础配置, 通过继承这个可以获取大部分的默认基础配置-->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
    </parent>
    <properties>
        <!--可以对上面的默认配置进行覆盖 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <!-- 将默认的 2.0.0.RELEASE 版本的spring-boot-starter-json 覆盖为1.5.4.RELEASE -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-json</artifactId>
            <version>1.5.4.RELEASE</version>
            <scope>compile</scope>
        </dependency>
    </properties>
</project>

下面我们来配置 第一个spring boot module的pom了. IDEA已经帮我们创建了一个基础的pom,内容如下图

        

         先要明确指出这个module的packaging和version.  在artifactId下面添加如下配置:

  <version>1.0.0</version>
  <packaging>jar</packaging>

我们要展示一个restful 风格例子, 所以需要添加相关的依赖:

<dependencies>     
        <dependency>
            <!--web 项目的依赖 -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!--这里不用配置version, spring boot相关的依赖都依据 parent的版本配置-->
            <!--<version>2.0.0.RELEASE</version>-->
        </dependency>
</dependencies>

对,就添加这一个依赖就足够了,想想以前我们使用spring mvc的时候, 需要加一大堆的依赖才可以.

           接下来我们配置spring boot 的pluging, 添加如下配置:

<build>
     <plugins>
          <plugin>
                <!-- spring boot的 maven 插件-->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
          </plugin>
     </plugins>
</build>   

这里只是简单引入了spring boot的maven插件, 它提供了基础的基于spring boot的maven命令,我们可以在IDEA中看见

       

   好了,module的pom也配置完成了. 完整的代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <parent>
        <artifactId>spring-boot-learning</artifactId>
        <groupId>org.learning</groupId>
        <version>1.0.0</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <groupId>org.learning.spring.boot</groupId>
    <artifactId>lesson1</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <!--web 项目的依赖 -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!--这里不用配置version, spring boot相关的依赖都依据 parent的版本配置-->
            <!--<version>2.0.0.RELEASE</version>-->
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <!-- spring boot的 maven 插件-->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

 

      开始编码

       下面 我们创建spring boot的入口 ,我们先新建一个包结构 ,并在这个包下面建立一个叫做Application(这个类的名字可以随意定义)的类, 如下图:

        

        注意:这里有个坑,如果我们没有建立包结构,直接把入口放在java下面,那么在启动的时候就会报下面这个错.

        ** WARNING ** : Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package.

        在新建的类的头部添加 @SpringBootApplication 注解, 这代表这个类是spring boot的入口. 

        然后在这个类中新增一个main入口  完成后的代码如下:

@SpringBootApplication

public class Application {

    public static void main(String[] args) {

        SpringApplication.run(Application.class, args);

    }
}

          网上有很多例子, 会给这个入口加  @EnableAutoConfiguration  @ComponentScan 等注解, 其实完全没有必要, @SpringBootApplication 是个复合注解,它已经包含了这两个注解了. 这两个注解只有在一些特殊的情况下才会显式的加入.  

        入口写好了,我们新建一个restful的Controller吧, 代码如下:

@RestController
public class DemoController {

    @RequestMapping("/")

    String home() {
        return "Hello World!";
    }

    @RequestMapping("/hello/{myName}")
    String index(@PathVariable String myName) {
        return "Hello "+myName+"!!!";
    }

}

     到这里我们第一个spring boot的程序就写好了.    下面,我们在IDEA中启动这个程序, 就可以访问上面两个链接了.

     

    

    

         程序写好了,怎么部署到服务器呢?  有两种方式:

         一种是直接运行这个jar, spring boot 自带了tomcat容器(默认)和jetty容器

         我们将编译出来的jar 放在linux下面,然后再同一目录新建一个脚本文件, 给脚本文件添加如下代码

#!/usr/bin/env bash
JAR_NAME="lesson1-1.0.0.jar"

if [ "$1" = "start" ] ; then
    PS_PID=`ps -ef | grep $JAR_NAME | grep -v 'grep'`
    if [ -z "$PS_PID" ] ; then
        echo "Start server..."
        java -Xms256m -Xmx1024m -Xmn128m -jar $JAR_NAME >out.file  2>&1 &
    else
        echo "server was started. PID = " $PS_PID
    fi
elif [ "$1" = "stop" ] ; then
    PS_PID=`ps -ef | grep $JAR_NAME | grep -v 'grep'`
    if [ -z "$PS_PID" ] ; then
            echo "server was stoped "
    else
            echo "Stop server..."
            kill -15 $PS_PID
    fi
else
    echo "Usage: $0  {start|stop}  [server console options ]"
    exit 1
fi

        保存后赋予权限   ./脚本文件  start 即可启动了  ./脚本文件  stop 执行停止

 

 接下来我们再尝试一下IDEA 直接创建 spring boot module (IDEA 必须是15版本以上)

         File-> new -> module 

   

    选择 Spring Initializr 点击 next

   

填写groupId , artifact , 包名等信息, 点击next

  这里选择spring boot的依赖, 我们选择了web下面的web, 点击next

填好 module 信息 ,点击finish.  OK spring boot的工程就建好了  

IDEA 帮我们把pom也配置好了.  后面按照之前的步骤创建相应的Controller就可以了.

本章结束 

下面一章里将介绍spring 的项目配置.敬请期待.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值