spring boot 入门

spring boot 特性

SpringApplication 应用类自动配置外化配置内嵌容器Starter 组件还有对日志、Web、消息、测试及扩展等支持。SpringApplicationSpringApplication 是 Spring Boot 应用启动类,在 main() 方法中调用 SpringApplication.run() 静态方法,即可运行一个 Spring Boot 应用。简单使用代码片段如下:

public static void main(String[] args) {
    SpringApplication.run(QuickStartApplication.class, args);
}

Spring Boot 运行的应用是独立的一个 Jar 应用,实际上在运行时启动了应用内部的内嵌容器,容器初始化 Spring 环境及其组件并启动应用。也可以使用 Spring Boot 开发传统的应用,只要通过 Spring Boot Maven 插件将 Jar 应用转换成 War 应用即可。

自动配置Spring Boot 在不需要任何配置情况下,就直接可以运行一个应用。实际上,Spring Boot 框架的 spring-boot-autoconfigure 依赖做了很多默认的配置项,即应用默认值。这种模式叫做 “自动配置”。Spring Boot 自动配置会根据添加的依赖,自动加载依赖相关的配置属性并启动依赖。例如,默认用的内嵌式容器是 Tomcat ,端口默认设置为 8080。

外化配置Spring Boot 简化了配置,在 application.properties 文件配置常用的应用属性。Spring Boot 可以将配置外部化,这种模式叫做 “外化配置”。将配置从代码中分离外置,最明显的作用是只要简单地修改下外化配置文件,就可以在不同环境中,可以运行相同的应用代码。

内嵌容器Spring Boot 启动应用,默认情况下是自动启动了内嵌容器 Tomcat,并且自动设置了默认端口为 8080。另外还提供了对 Jetty、Undertow 等容器的支持。开发者自行在添加对应的容器 Starter 组件依赖,即可配置并使用对应内嵌容器实例。

Starter 组件Spring Boot 提供了很多 “开箱即用” 的 Starter 组件。Starter 组件是可被加载在应用中的 Maven 依赖项。只需要在 Maven 配置中添加对应的依赖配置,即可使用对应的 Starter 组件。例如,添加 spring-boot-starter-web 依赖,就可用于构建 REST API 服务,其包含了 Spring MVC 和 Tomcat 内嵌容器等。

多种Starter组件Web:Spring Web、Spring WebFlux 等模板引擎:Thymeleaf、FreeMarker、Groovy、Mustache 等SQL:MySQL 、H2 等NoSQL:Redis、MongoDB、Cassandra、Elasticsearch 等验证框架:Hibernate Validator、Spring Validator 等日志框架:Log4j2、Logback 等测试:JUnit、Spring Boot Test、AssertJ、Mockito 等内嵌容器:Tomcat、Jetty、Undertow 等

快速入门工程

在搭建一个 Spring Boot 工程应用前,需要配置好开发环境及安装好开发工具:

JDK 1.8 Spring Boot 2.x 要求 JDK 1.8 环境及以上版本。另外,Spring Boot 2.x 只兼容 Spring Framework 5.0 及以上版本。Maven 3.2 为 Spring Boot 2.x 提供了相关依赖构建工具是 Maven,版本需要 3.2 及以上版本。使用 Gradle 则需要 1.12 及以上版本。本书使用 Maven 对 Spring Boot 工程进行依赖和构建管理。IntelliJ IDEAIntelliJ IDEA (简称 IDEA)是常用的开发工具,也是本书推荐使用的。同样使用 Eclipse IDE,也能完成本书的实践案例。另外,本书的工程都会在 GitHub 上开源,如需要请自行安装 Git 环境。注意:JDK 安装、Maven 安装、Git 安装和 IntelliJ IDEA 开发工具安装详解,见附录 A

安装环境虽然耗时,但磨刀不误砍柴工。下面开发 “Hello Spring Boot” 工程,大致分下面三个步骤:

创建工程

利用 spring Initializr 插件创建工程

开发工程

1.Pom 依赖parent 节点配置是 Spring Boot 的 Parent 依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
    <relativePath/>
</parent>

spring-boot-starter-parent 依赖,是 Spring Boot 提供的一个特殊的 Starter 组件,本身没有任何依赖。

spring-boot-starter-parent 职责,一方面是用于提供 Maven 配置的默认值,即在 Spring Boot 2.x 中设置 JDK 1.8 为默认编译级别、设置 UTF-8 编码等。另一方面,其父依赖 spring-boot-dependencies 中的 dependency-management 节点提供了所有 Starter 组件依赖配置的缺省版本值,但不提供依赖本身的继承。这样的作用是使用各个组件依赖拿来即用,不需要指定 version

2.应用启动类在工程 src 目录中,已经自动创建了包目录 demo.springboot ,其包下自动创建了 Spring Boot 应用启动类,代码如下:

@SpringBootApplication
public class QuickStartApplication {
    public static void main(String[] args) {
        SpringApplication.run(QuickStartApplication.class, args);
    }
}

Spring Boot 应用启动类,是可以用来启动 Spring Boot 应用。其包含了 @SpringBootApplication 注解和 SpringApplication 类,并调用 SpringApplication 类的 run() 方法,就可以启动该应用。

@SpringBootApplication 注解@SpringBootApplication 注解用标注启动类,被标注的类为一个配置类,并会触发自动配置和 Starter 组件扫描。根据源码可得,该注解配置了 @SpringBootConfiguration、 @EnableAutoConfiguration 和 @ComponentScan 三个注解, @SpringBootConfiguration 注解又配置了 @EnableAutoConfiguration 。所以该注解的职责相当于结合了 @Configuration, @EnableAutoConfiguration 和 @ComponentScan 三个注解功能。

@SpringBootApplication 注解的职责如下:

在被该注解修饰的类中,可以用 @Bean 注解来配置多个 Bean 。应用启动时,Spring 容器会加载 Bean 并注入到 Spring 容器。启动 Spring 上下文的自动配置。基于依赖和定义的 Bean 会自动配置需要的 Bean 和类。扫描被 @Configuration 修饰的配置类。也会扫描 Starter 组件的配置类,并启动加载其默认配置SpringApplication 类大多数情况下,在 main 方法中调用 SpringApplication 类的静态方法 run(Class, String[]) ,用来引导启动 Spring 应用程序。默认情况下,该类的职责会执行如下步骤:– 创建应用上下文 ApplicationContext 实例– 注册 CommandLinePropertySource,将命令行参数赋值到 Spring 属性– 刷新应用上下文,加载所有单例– 触发所有 CommandLineRunner Bean

在实际开发中如果需要自定义创建高级的配置,可以通过 run(Class, String[]) 方法的第二个参数,并以 String 数组的形式传入。这是 run 几个重载方法的 API 文档:

API org.springframework.boot.SpringApplicationstatic run(Class>[] primarySources, String[] args)返回正在运行的应用上下文 ApplicationContext参数:primarySources 应用指定的主要类源,数组形式args 应用参数

static run(Class> primarySource, String… args)返回正在运行的应用上下文 ApplicationContext

参数:primarySource 应用指定的主要类源args 应用参数

run(String… args)返回正在运行的应用上下文 ApplicationContext

参数:args 应用参数

3.控制层在工程中新建包目录 demo.springboot.web ,并在目录中创建名为 HelloController 的控制层类,代码如下:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

    @RequestMapping(value = "/hello",method = RequestMethod.GET)
    @ResponseBody
    public String sayHello() {
        return "Hello,Spring Boot!";
    }
}

上面定义了简单的 REST API 服务,即 GET:/hello。表示该 Hello 控制层 sayHello() 方法会提供请求路径为 /hello 和请求方法为 GET 的 HTTP 服务接口。Spring 4.0 的注解 @RestController 支持实现 REST API 控制层。本质上,该注解结合了 @Controller 和 @ResponseBody 的功能。所以将上面 HelloController 可以改造升级成 HelloBookController,代码如下:

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloBookController {

    @RequestMapping(value = "/book/hello",method = RequestMethod.GET)
    public String sayHello() {
        return "Hello,《Spring Boot 2.x 核心技术实战 - 上 基础篇》!";
    }
}

spring mvc 知识点@Controller 注解@Controller 对控制层类进行标注,职责是使控制层可以处理 HTTP 请求,简单可以理解为,使控制层能接受请求,处理请求并响应。@RequestMapping 注解@RequestMapping 对控制层类的方法进行标注,职责是标明方法对应的 HTTP 请求路由的关系映射。参数 value 主要请求映射地址,可接受多个地址。参数 method 标注 HTTP 方法,常用如: GET,POST,HEAD,OPTIONS,PUT,PATCH,DELETE,TRACE。默认是 GET HTTP 方法,在 GET 请求的情况下,可以缩写成 @RequestMapping(value = "/book/hello") 。Spring 4 支持直接使用 XXXMapping 形式的注解,比如上面代码可以写成 @GetMapping("/book/hello")。@ResponseBody 注解@ResponseBody 对控制层类的方法进行标注,职责是指定响应体为方法的返回值。上面代码中,案例是以字符串的形式返回,自然可以使用其他复杂对象作为返回体。

运行工程

maven编译工程

使用 IDEA 右侧工具栏,点击 Maven Project Tab ,点击使用下 Maven 插件的 install 命令

cd chapter-1-spring-boot-quickstart
mvn clean install

运行工程三种方式1.在 IDEA 中执行 QuickStartApplication 类启动,任意正常模式或者 Debug 模式。可以在控制台看到成功运行的输出2.通过 Maven 运行,需要配置 Spring Boot Maven 插件,在 pom.xml 配置文件中,新增 build 节点并配置插件 spring-boot-maven-plugin

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

在工程根目录中,运行如下 Maven 命令来运行 Spring Boot 应用:

mvn spring-boot:run

实际调用的是 pom.xml 配置的 Spring Boot Maven 插件 spring-boot-maven-plugin ,上面执行了插件提供的 run 指令。也可以在 IDEA 右侧工具栏的 Maven Project Tab 中,找到 Maven 插件的 spring-boot-maven-plugin,执行相应的指令

# 生成构建信息文件
spring-boot:build-info
# 帮助信息
spring-boot:help
# 重新打包
spring-boot:repackage
# 运行工程
spring-boot:run
# 将工程集成到集成测试阶段,进行工程的声明周期管理
spring-boot:start
spring-boot:stop

3.java命令使用 Maven 或者 Gradle 安装工程,生成可执行的工程 jar 后,运行如下 Java 命令来运行 Spring Boot 应用:

java -jar target/chapter-1-spring-boot-quickstart-1.0.jar这里运行了 spring-boot-maven-plugin 插件编译出来的可执行 jar 文件

服务器部署

基础环境安装如上面说的,需要 JDK 环境、Maven 环境等

1.5.1 Win 服务器推荐使用 AlwaysUp:

file

使用方式也很简单:

file

1.5.2 Linux 服务器推荐 yum 安装基础环境,比如安装 JDK:

yum -y list java*yum -y install java-1.8.0-openjdk*java -version安装 Maven:

yum -y list apache-mavensudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.reposudo yum install -y apache-mavenmvn --vLinux 使用 nohup 命令进行对后台程序的启动关闭。

关闭应用的脚本:stop.sh

file

启动应用的脚本:start.shfile

重启应用的脚本:stop.sh

file

本文由博客一文多发平台 OpenWrite 发布!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值