Spring Boot 入门指南

简介: Spring Boot 入门指南

Spring Boot 简化了Spring 应用的初始搭建、开发过程,开发人员可使用Spring提供的特定的方式来进行配置,不再需要重复自定义样板化的配置。本文就将带你入门Spring Boot

目录

0x0 前言

0x1 简介

0x2 Hello World

0x3 文件解析

    pom.xml

    应用入口类

0x4 进阶

    项目目录

    编写单元测试

    开发环境的调试

0x5 参考

0x0 前言

记得当初放弃 Java 主要原因是几个框架整合,花了大半天去编写配置文件,编写任务后运行依然有报错,甚是心累,故转前端开发了。最近周围很多 Java 朋友说微服务开发很爽,各种简单,自己本地体验下,的确很简单。所以对此抱有很大的学习兴趣。再加上之前使用 Nestjs 项目很像 Spring Boot 风格寻思还不如直接使用它。

0x1 简介

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是 Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 maven 整合了所有的 jar 包,Spring Boot 整合了所有的框架 。

0x2 Hello World

IDE:IntelliJ IDEA 2021.01

JDK:OpenJDK 1.8.0_282

由于我用的是IDEA编辑器,创建环境可以创建Spring Boot项目,当然你可以从 https://start.spring.io/ 根据自身环境直接 Generate Project 生成zip文件进行编写。

在 IDEA 创建 Spring Boot 操作步骤如下:

在主界面点击 Create New Project 后左边列表选择 Spring Initalizr 选项,右边选项除了 JDK 安装自身版本其他默认即可。

点击 Next 到下一步,编写项目简介请根据实际自身情况编写。没有特需直接默认下一步。

Dependencies 界面直接勾选 Web-Web 选项即可

直接 Next 下一步后 IDEA 会进行构建依赖 jar 包,请等待完成。

运行 main 方法,打开 http://localhost:8080/ 地址查看效果

image.png

0x3 文件解析

如上图所示,项目目录解析:

pom.xml:Maven构建说明文件。

DemoApplication.java:一个带有 main() 方法的类,用于启动应用程序

(关键)。

DemoApplicationTests.java:一个空的 Junit 测试类,它加载了一个使用

Spring Boot 字典配置功能的Spring应用程序上下文。

application.properties:一个空的 properties 文件,你可以根据需要添加

配置属性。

pom.xml

Spring Boot父级依赖

在这儿简单说一下配置标签的意思很大的程度上和Spring MVC工程配置是不太一样的:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.2.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

从 parent 得知该配置是 Spring Boot 父级依赖:有了这个,当前的项目就是 Spring Boot 项目了,spring-boot-starter-parent 是一个特殊的 starter ,它用来提供相关的 Maven 默认依赖,使用它之后,常用的包依赖可以省去 version 标签。关于 Spring Boot 提供了哪些 jar 包的依赖,可查看 C:\Users\Jaxson[你的用户名].m2\repository\org\springframework\boot\spring-boot-dependencies\2.0.2.RELEASE\spring-boot-dependencies-2.0.2.RELEASE.pom文件得知。

所以在原有的配置文件上想升级某个依赖文件版本的话,可以直接 pom 文件添加指定的配置版本,例如:

<properties>
    <spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>
</properties>

起步依赖 spring-boot-starter-xx

Spring Boot 提供了很多”开箱即用“的依赖模块,都是以 spring-boot-starter-xx 作为命名的。举个例子来说明一下这个起步依赖的好处,比如组装台式机和品牌机,自己组装的话需要自己去选择不同的零件,最后还要组装起来,期间有可能会遇到零件不匹配的问题。耗时又消力,而品牌机就好一点,买来就能直接用的,后续想换零件也是可以的。相比较之下,后者带来的效果更好点,起步依赖就像这里的品牌机,自动给你封装好了你想要实现的功能的依赖。就比如我们之前要实现web功能,引入了 spring-boot-starter-web 这个起步依赖。

Spring Boot Maven插件

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
把项目打包成一个可执行的超级 JAR(uber-JAR) ,包括把应用程序的所有依赖打入 JAR 文件内,并为 JAR 添加一个描述文件,其中的内容能让你用 java -jar 来运行应用程序。

搜索 public static void main() 方法来标记为可运行类。

应用入口类

DemoApplication是一个启动类,就是一个程序入口,下面添加一个入口类方法简单的演示下:

package com.example.demo;
  
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
  
@RestController
@SpringBootApplication
public class DemoApplication {
  
    @RequestMapping("/")
    public String index() {
        return "Hello World";
    }
  
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
  
}
@SpringBootApplication 是 Sprnig Boot 项目的核心注解,主要目的是开启自动配置。

main 方法这是一个标准的 Java 应用的 main 的方法,主要作用是作为项目启动的入口。

@RestController 注解等价于 @Controller + @ResponseBody 的结合,使用这个注解的类里面的方法都以 json 格式输出。

启动后在浏览器会看到 Hello World 内容,一个简单的 Web 的项目就这样搞定。

0x4 进阶

项目目录

在实际项目中建议使用:

com
  +- example
    +- myproject
      +- Application.java
      |
      +- domain
      |  +- Customer.java
      |  +- CustomerRepository.java
      |
      +- service
      |  +- CustomerService.java
      |
      +- web
      |  +- CustomerController.java
      |
Application.java 建议放到跟目录下面,主要用于做一些框架配置

domain 目录主要用于实体(Entity)与数据访问层(Repository)

service 逻辑层主要是业务类代码

web(controller) 负责页面访问控制

养成一个目录清晰结构习惯是必须的...方便后期的维护性和可读性。

编写单元测试

同样测试类编写是很重要的习惯,在本实例编写简单的 http 请求测试,使用 mockmvc 进行,利用MockMvcResultHandlers.print() 打印出执行结果:

package com.example.demo;
  
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
  
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
  
    private MockMvc mvc;
    @Before
    public void setUp() throws Exception {
        mvc = MockMvcBuilders.standaloneSetup(new DemoApplication()).build();
    }
  
    @Test
    public void contextLoads() throws Exception {
        mvc.perform(MockMvcRequestBuilders.get("/").accept(MediaType.APPLICATION_JSON))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print())
                .andReturn();
    }
  
}

开发环境的调试

热启动在正常开发项目中已经很常见了吧,虽然平时开发web项目过程中,改动项目启重启总是报错;但springBoot 对调试支持很好,修改之后可以实时生效,需要添加以下的配置:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
   </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <fork>true</fork>
            </configuration>
        </plugin>
   </plugins>
</build>

该模块在完整的打包环境下运行的时候会被禁用。如果你使用 java -jar 启动应用或者用一个特定的 classloader 启动,它会认为这是一个“生产环境”。

0x5 参考

Building an Application with Spring Boot

以上就是Spring Boot 入门指南的详细内容,更多关于Spring Boot 入门的资料请关注其它相关文章!

相关文章
|
2月前
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
2月前
|
Java
Spring5入门到实战------9、AOP基本概念、底层原理、JDK动态代理实现
这篇文章是Spring5框架的实战教程,深入讲解了AOP的基本概念、如何利用动态代理实现AOP,特别是通过JDK动态代理机制在不修改源代码的情况下为业务逻辑添加新功能,降低代码耦合度,并通过具体代码示例演示了JDK动态代理的实现过程。
Spring5入门到实战------9、AOP基本概念、底层原理、JDK动态代理实现
|
2月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
10天前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
22 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
9天前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
13 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
9天前
|
Java API Spring
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中过滤器的基础知识和实战项目应用的教程。
12 0
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
|
22天前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
42 2
|
2月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
2月前
|
NoSQL Java Redis
Redis6入门到实战------ 八、Redis与Spring Boot整合
这篇文章详细介绍了如何在Spring Boot项目中整合Redis,包括在`pom.xml`中添加依赖、配置`application.properties`文件、创建配置类以及编写测试类来验证Redis的连接和基本操作。
Redis6入门到实战------ 八、Redis与Spring Boot整合
|
2月前
|
SQL 数据库
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
这篇文章是Spring5框架的实战教程,深入讲解了如何使用JdbcTemplate进行数据库的批量操作,包括批量添加、批量修改和批量删除的具体代码实现和测试过程,并通过完整的项目案例展示了如何在实际开发中应用这些技术。
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】