SpringBoot实战教程之新手入门篇

目录
  • 1.SpringBoot简介
  • 2.SpringBoot安装
    • 2.1.基于Maven的安装
    • 2.2.基于Gradle的安装
  • 3.创建HelloWorld应用
  • 4.代码结构
  • 5.Configuration类
    • 5.1.导入其它配置
  • 6.自动化配置
    • 6.1.逐渐替换自动化配置
    • 6.2.禁止特定的自动化配置
  • 7.使用@SpringBootApplication注解
  • 总结

1. SpringBoot 简介

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot 可以轻松创建一个基于 Spring 且独立运行的生产级应用。

2. SpringBoot 安装

SpringBoot 的安装有很多种方式,最简单的一种是直接将 spring-boot-*.jar 等文件添加到工程的 classpath 下,这种你就可以运行并调试你的应用了。如果是企业级应用,推荐使用构建工具来管理项目的依赖,比如:Maven 或者 Gradle 等。对于直接添加 classpath 的方式,这里不做多余的介绍,下面主要描述基于构建工具的安装指导。

2.1. 基于 Maven 的安装

Spring Boot 与 Apache Maven 3.2兼容。如果你还没有安装 Maven,可以按照 maven.apache.org 上的说明进行操作。

Spring Boot 依赖使用 org.springframework.boot 作为 groupId。通常情况下,你的 POM 文件会继承 spring-boot-starter-parent 工程,然后再声明一个或多个 Starters 的依赖。Spring Boot 同时也提供了一个可选的Maven 插件用来生成可执行的 Jar 包。

典型的 pom.xml 文件:

<?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.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>myproject</artifactId>

    <!-- 继承 Spring Boot 的默认值 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.3.RELEASE</version>
    </parent>

    <!-- 为 Web 应用添加能用依赖 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <!-- 打包成一个可执行 jar 包 -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

提示:

spring-boot-starter-parent 是使用 Spring Boot 的一种比较好的方式,但它并不适用于所有场景。有时,你可能需要继承一个不同的父级 Pom,或者你不喜欢这种默认的配置。你也可以通过声明一个 scope=import 的依赖来使用它:

<dependencyManagement>
     <dependencies>
        <dependency>
            <!-- 从 Spring Boot 导入依赖管理 -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.5.3.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

2.2. 基于 Gradle 的安装

相对 Maven 庞大的 XML 配置,我更喜欢 Gradle 多一点,不但简洁而且灵活性也好很多。Spring Boot 与 Gradle(2.9或以上)、Gradle 3兼容。如果你还没有安装 Gradle,你可以按照 www.gradle.org 上的操作说明来进行安装。

典型的 build.gradle 文件:

plugins {
    id 'org.springframework.boot' version '1.5.3.RELEASE'
    id 'java'
}
jar {
    baseName = 'myproject' version = '0.0.1-SNAPSHOT'
}
repositories {
    jcenter()
    maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
}
dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile("org.springframework.boot:spring-boot-starter-test")
}

3. 创建 HelloWorld 应用

创建一个简单的 Java 类如下:

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@RestController
@EnableAutoConfiguration
public class Example {

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

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

}

Example 类上的第一个注解 @RestController 是 @Controller 及 @ResponseBody 的组合,表明这是一个控制器,且所有响应数据都会被序列化到响应体里面返回。而方法上的 @RequestMapping 注解会为请求处理提供路由信息。这些注解都是 Spring 的,而不是 Spring Boot 特有的。

类上的第二个注解 @EnableAutoConfiguration 会告诉 Spring Boot 去通过依赖的 Jar 包配置 Spring 工程。因为 spring-boot-starter-web 里面包含有 Tomcat 及 Spring MVC,所以它会认为这是一个 Web 工程,并进行相应的 Spring 配置。

应用的最后一部分是一个 main 方法,它通过调用 SpringApplication 的 run 方法将应用程序委托给 Spring Boot。SpringApplication 将引导我们的应用程序启动 Spring 及自动配置的 Tomcat Web 服务。我们需要将 Example.class 作为一个参数传递给 run 方法来告诉 SpringApplication 它是主要的 Spring 组件。

运行 main 方法后,即可以使用浏览器打开地址 localhost:8080 会得到输出:

Hello World!

4. 代码结构

一般的应用都会使用 域名的反转 + 项目名 作为项目的统一包名前缀。如:com.qchery.funda。在 SpringBoot 的项目中,推荐使用如下布局:

com
 +- qchery
     +- funda
         +- Application.java
         |
         +- entity
         |   +- Customer.java
         |
         +- dao
         |   +- CustomerRepository.java
         |
         +- service
         |   +- CustomerService.java
         |
         +- web
             +- CustomerController.java

其中,Application.java 文件如下:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {

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

}

一般来说,我们会将 @EnableAutoConfiguration 注解放置在 主类上,也就是上面结构中的 Application.java。它隐式定义了包含某些搜索项的搜索包,例如,如果你正编写一个 JPA 的应用程序,那么带 @EnableAutoConfiguration 注解的类将会被用来搜索带有 @Entity 的类。

而 @ComponentScan 会用来自动扫描相应组件,由于 Application.java 是的根包名下,所以它不需要声明 basePackage 去指定需要扫描的包,默认为根包名,即:com.qchery.funda。

5. Configuration 类

SpringBoot 同时支持 Java-based 配置及 XML 文件配置。但推荐使用 Java-based 形式的配置,如果现在的系统中已经存在一些 XML 形式的配置,建议使用相同效果的 Java-based 配置进行替换,你可以通过搜索 Enable* 来查找对应的 Java-based 配置。

5.1. 导入其它配置

在 SpringBoot 工程里面,我们不需要把所有的配置放置到一个类文件里面。它的 @Import 注解可以帮助我们导入其它的配置类,如果想要导入 XML 形式的配置,可以使用 @ImportResource 注解。另外,还可以使用 @ComponentScan 注解去扫描所有带有 @Configuration 注解的类。

6. 自动化配置

当你在某一个带有 @Configuration 的类里加上 @EnableAutoConfiguration 或 @SpringBootApplication 注解时,SpringBoot 会根据所添加的依赖包自动完成项目配置。例如,如果你在类路径下添加 HSQLDB 的包,但你没有配置任何数据库属性,SpringBoot 会自动配置一个 In-Memory 数据库。其中 @EnableAutoConfiguration 只能添加一个类上,建议将其加在主要的 @Configuration 类上。

6.1. 逐渐替换自动化配置

自动化配置并不是侵入式的,在任何地方你都可以通过自定义配置来替换它。例如,如果你添加自己的数据库配置,那么默认的嵌入式数据库支持将会被退回。如果想要查看自动化配置是否生效,可以在运行程序时,加上 –debug 参数进行查看。

6.2. 禁止特定的自动化配置

当你发现自动化配置不能按自己的意愿进行工作的时候,可以通过 @EnableAutoConfiguration 的 exclude 属性来禁用掉它们。

import org.springframework.boot.autoconfigure.*;
import org.springframework.boot.autoconfigure.jdbc.*;
import org.springframework.context.annotation.*;

@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}

7. 使用 @SpringBootApplication 注解

由于大多数情况下,@Configuration,@EnableAutoConfiguration 及 @ComponentScan 注解都是一起使用的。SpringBoot 提供了 @SpringBootApplication 这个更加方便的选择,它等同于前三个注解。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication // 等同于 @Configuration @EnableAutoConfiguration @ComponentScan
public class Application {

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

}

项目的 github 地址:https://github.com/qchery/funda

总结

到此这篇关于SpringBoot实战教程之新手入门篇的文章就介绍到这了,更多相关SpringBoot入门篇内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot新手入门的快速教程

    SpringBoot是什么? SpringBoot是spring家族中微型框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程. Spring Boot可以轻松创建独立的,生产级的基于Spring的应用程序,您可以"运行". 特征: 创建独立的Spring应用程序 直接嵌入Tomcat,Jetty或Undertow(无需部署WAR文件) 提供自以为是的"入门"依赖项以简化构建配置 尽可能自动配置Spring和第三方库 提供生产就绪功能,例如指标,运行状

  • springboot下配置多数据源的方法

    一.springboot 简介 SpringBoot使开发独立的,产品级别的基于Spring的应用变得非常简单,你只需"just run". 我们为Spring平台及第三方库提 供开箱即用的设置,这样你就可以有条不紊地开始.多数Spring Boot应用需要很少的Spring配置. 你可以使用SpringBoot创建Java应用,并使用 java -jar 启动它或采用传统的war部署方式.我们也提供了一个运行"spring 脚本"的命令行工具. 二.传统的Dat

  • 10道springboot常见面试题

    本文为大家分享了10道springboot常见面试题,供大家参考,具体内容如下 1.什么是Spring Boot? 多年来,随着新功能的增加,spring变得越来越复杂.只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的所有Spring项目的不同功能. 如果必须启动一个新的Spring项目,我们必须添加构建路径或添加Maven依赖关系,配置应用程序服务器,添加spring配置. 因此,开始一个新的spring项目需要很多努力,因为我们现在必

  • 详解Springboot事务管理

    在Spring Boot事务管理中,实现自接口PlatformTransactionManager. public interface PlatformTransactionManager { org.springframework.transaction.TransactionStatus getTransaction(org.springframework.transaction.TransactionDefinition transactionDefinition) throws org.

  • SpringBoot实战教程之新手入门篇

    目录 1.SpringBoot简介 2.SpringBoot安装 2.1.基于Maven的安装 2.2.基于Gradle的安装 3.创建HelloWorld应用 4.代码结构 5.Configuration类 5.1.导入其它配置 6.自动化配置 6.1.逐渐替换自动化配置 6.2.禁止特定的自动化配置 7.使用@SpringBootApplication注解 总结 1. SpringBoot 简介 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spri

  • 使用vue-cli创建项目的图文教程(新手入门篇)

    本文是针对对于完全没有了解过vue 和npm,连运行环境和项目构建的都不会的小白,对于前端老司机的就不用看了,浪费时间. 使用npm 与vue-cli 构建vue 项目 第一步:安装运行环境(node与npm) nodeJ官网:http://nodejs.cn/下载安装包( 安装) 安装完成后,需要检测是否安装成功 使用命令行cmd 打开dos 黑窗口,运行 node -v 和 npm –v,出现版号说明安装成功 注(npm 是node自带的,在安装node时已经安装了) 如何升级npm 的版本

  • Visual Studio Debug实战教程之基础入门

    前言 在过去,我已经写过好几篇关于调试 / debug / 解 Bug 的文章,但都是从宏观的角度上去讲的,并没有针对哪种工具做具体深入的剖析. 在软件开发周期中,测试和修正缺陷(defect,defect与bug的区别:Bug是缺陷的一种表现形式,而一个缺陷是可以引起多种Bug的)的时间远多于写代码的时间.通常,debug是指发现缺陷并改正的过程.修正缺陷紧随debug之后,或者说二者是相关的.如果代码中存在缺陷,我们首先要识别造成缺陷的根本原因(root cause),这个过程就称作调试(d

  • jQuery 技巧大全(新手入门篇)

    一.简介 1.1.概述随着WEB2.0及ajax思想在互联网上的快速发展传播,陆续出现了一些优秀的Js框架,其中比较著名的有Prototype.YUI.jQuery.mootools.Bindows以及国内的JSVM框架等,通过将这些JS框架应用到我们的项目中能够使程序员从设计和书写繁杂的JS应用中解脱出来,将关注点转向功能需求而非实现细节上,从而提高项目的开发速度.jQuery是继prototype之后的又一个优秀的Javascript框架.它是由 John Resig 于 2006 年初创建

  • Spring boot学习教程之快速入门篇

    前言 首先来说一下为什么使用 Spring Boot,之前我用的后端 WEB 开发框架一直都是 PlayFramework的 1.2.7 版本(目前已经停止更新), 不得不说这个框架非常好用,但是由于 Play2.x 版本和 Play1.x 版本差别巨大,并且不兼容,所以现在面临着选择新的框架的问题,问了下身边的朋友,发现他们都在用 Spring ,然而我发现 Spring 的话,经常要配置各种东西,习惯了 Play 的简单明了的配置方式,确实有些不习惯 Spring ,这个时候发现了 Spri

  • Android实战教程第四十三篇之上拉加载与下拉刷新

    ListView的下拉刷新很常见,很多开源的框架都能做到这个效果,当然也可以自己去实现.本篇案例是基于xlistview的. 布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent&quo

  • Android实战教程第四十篇之Chronometer实现倒计时

    Android提供了实现按照秒计时的API,今天就是用这个API实现简单的倒计时. 来个布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:lay

  • spring boot 学习笔记(入门篇)

    简介: Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.用我的话来理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道这样比喻是否合适). 优点: 其实就是简单.快速.方便!平时如果我们需要搭建一个spring web项目的时候需要怎么

  • Mybatis实战教程之入门到精通(经典)

    什么是mybatis MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点: 1. 从配置文件(通常是XML配置文件中)得到 ses

  • Android Studio 新手入门教程(一)基本设置图解

    ##写在前面: 作为一个刚半只脚踏入android开发的新手,在使用eclipse开发了两个自我感觉不甚成熟的商城类app之后,遇到了一些问题,总结为如下: 1.代码复用性 .findviewById,onclick事件等,一遍遍重复这类无聊的代码简直浪费生命,这个问题推荐通过依赖注入框架ButterKnife解决,直接一键生成布局中的所有控件,包括onclick点击事件,但是诸如行布局item里的控件,以及布局中include复用的布局要如何使用框架解决,这个有待后续再看. 另一个代码重复率很

随机推荐