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

本文介绍了SpringBoot的基本概念及其简化配置的特点,并通过实例演示了如何使用Maven或IDEA创建SpringBoot项目,包括配置依赖和编写RESTful风格的服务。

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 的项目配置.敬请期待.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值