Spring Boot

Spring Boot


SpringBoot中文文档:https://springdoc.cn/spring-boot/index.html

Spring Boot是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。Spring Boot通过自动配置功能,降低了复杂性,同时支持基于JVM的多种开源框架,可以缩短开发时间,使开发更加简单和高效。

一个最简单的Spring Boot项目

Spring Maven坐标依赖 【SpringBoot】核心依赖和自动配置

Spring Boot 项目通常需要以下核心依赖:

  1. spring-boot-starter-web:用于构建Web应用程序,包括内嵌的Tomcat服务器和Spring MVC。
  2. spring-boot-starter-data-jpa:用于与JPA(Java Persistence API)进行集成,简化数据访问层的开发。
  3. spring-boot-starter-test:用于编写单元测试和集成测试。
  4. spring-boot-starter-security:用于实现应用程序的安全性功能,如身份验证和授权。
  5. spring-boot-starter-thymeleaf:用于集成Thymeleaf模板引擎,用于构建Web页面。
  6. spring-boot-starter-actuator:用于监控和管理Spring Boot应用程序。
  7. spring-boot-devtools:提供开发工具,如自动重新加载应用程序、远程调试等。
  8. spring-boot-starter-data-rest:用于将Spring Data仓库暴露为RESTful API。
  9. spring-boot-starter-validation:用于实现数据验证和校验。

这些是Spring Boot 项目常用的核心依赖,根据项目需求还可以添加其他依赖,如数据库驱动、消息队列等。

最简单的Spring Boot依赖文件(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>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.3</version>
    </parent>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    
    <properties>
        <java.version>11</java.version>
    </properties>
    
</project>

首先就是核心依赖了:

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>1.5.2.RELEASE</version>
</parent>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

Spring Boot 启动类

package org.example;

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

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

Spring Boot 配置文件

在Spring Boot中,配置文件的名称和位置对应于应用程序的不同环境。主要有以下几种配置文件:

  1. src/main/resources/application.properties:这是Spring Boot应用程序的默认配置文件。可以在其中设置各种配置属性,如数据库连接信息、端口号等。
  2. src/main/resources/application.yml:与application.properties类似,但使用YAML格式编写配置,更加清晰和易读。
  3. src/main/resources/application-{profile}.propertiessrc/main/resources/application-{profile}.yml:用于指定特定环境的配置文件,其中{profile}是环境的名称,如development、production等。
  4. 命令行参数:可以通过命令行参数覆盖配置文件中的配置,例如:java -jar myapp.jar --server.port=8081
  5. 环境变量:可以通过设置环境变量来覆盖配置文件中的配置。

Spring Boot 如何定义Controller

package org.example;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot!";
    }
}

启动项目,查看运行状态

打开浏览器,输入网址http://localhost:9091/hello


外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果浏览器如上显示,则成功

创建几个简单的静态页面

集成数据访问 Spring Data

Spring Data提供了额外的项目,帮助你访问各种如下的NoSQL技术。

使用MySQL数据库

在Spring Boot中集成Spring Data非常简单,只需要添加相应的依赖即可。以下是一些基本步骤:

  1. 添加Spring Data JPA依赖:在pom.xml(如果是Maven项目)或build.gradle(如果是Gradle项目)中添加Spring Data JPA依赖。

    Maven 依赖:

添加Lombok依赖:在pom.xml(如果是Maven项目)或build.gradle(如果是Gradle项目)中添加Lombok依赖。

  1. 安装Lombok插件:在IDE中安装Lombok插件,以便IDE能够识别Lombok的注解并在编译时生成对应的代码。
  2. 使用Lombok注解:在实体类或其他需要使用Lombok的地方,使用Lombok提供的注解来简化代码,如@Getter@Setter@ToString等。

添加依赖

<!--spring data jpa-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--lombok-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.22</version>
    <scope>provided</scope>
</dependency>

为什么在这里添加Lombok依赖?

Lombok是一个Java库,可以通过注解的方式来减少代码的编写量,提高代码的简洁性和可读性。使用Lombok可以在编译时自动生成一些常见的Java代码,例如getter和setter方法、equals和hashCode方法、toString方法等,从而减少了开发人员需要手动编写的重复代码量。

Lombok的主要作用包括:

  1. 简化POJO类的编写:使用@Data注解可以自动生成getter、setter、toString、equals、hashCode等方法,大大减少了POJO类的代码量。
  2. 简化构造函数的编写:使用@NoArgsConstructor@RequiredArgsConstructor@AllArgsConstructor等注解可以自动生成无参构造函数、有参构造函数等。
  3. 简化日志的使用:使用@Slf4j@Log等注解可以自动生成日志对象,简化了日志的使用。
  4. 其他功能:除了上述功能外,Lombok还提供了一些其他功能,如@Builder用于构建器模式、@SneakyThrows用于抛出受检异常等。

总的来说,Lombok能够通过简洁的注解减少Java代码的编写量,提高开发效率,但同时也可能会导致代码可读性降低,因为一些生成的代码并不会在源代码中直接显示,需要开发人员了解这些注解的作用。

配置数据源

application.propertiesapplication.yml文件中配置数据源信息,如数据库URL、用户名、密码等。

# 数据库连接配置
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root

数据库设计

创建数据库mydb

添加user表

设计字段

创建实体类

创建与数据库表对应的实体类,并使用JPA注解进行实体类的映射。

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String username;
    private String password;
    // getters and setters
}

集成测试 Spring Test

添加依赖

<!--spring test-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
</dependency>

在使用Spring Boot Test注解时,你不需要手动安装任何额外的依赖。Spring Boot Test依赖会随着Spring Boot的启动而自动添加到项目的classpath中。你只需要在项目中使用@SpringBootTest等注解来编写测试,并确保项目中已经包含了对应的Spring Boot依赖,例如spring-boot-starter-test。Spring Boot会自动加载测试所需的依赖,并启动相应的测试环境。

在Spring Boot项目中集成Spring Test非常简单,Spring Boot已经集成了对JUnit和Spring框架的测试支持。你可以使用@SpringBootTest注解来启动整个Spring应用程序上下文,并在测试中使用自动配置的功能。

以下是一个简单的示例,展示了如何在Spring Boot项目中编写一个简单的单元测试:

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import static org.junit.jupiter.api.Assertions.assertEquals;

@SpringBootTest
public class MyServiceTest {

    @Autowired
    private MyService myService;

    @Test
    public void testMyService() {
        String result = myService.doSomething();
        assertEquals("Hello, Spring Boot!", result);
    }
}

在这个示例中,@SpringBootTest注解用于启动整个Spring应用程序上下文,使得MyService类及其依赖的其他组件可以被自动注入。@Autowired注解用于注入MyService实例,然后可以在测试方法中调用其方法进行测试。assertEquals方法用于断言测试结果是否符合预期。

除了单元测试外,Spring Boot还支持集成测试、Web测试、数据访问测试等多种测试场景,你可以根据项目的需求选择合适的测试方式。

集成模板引擎 Spring Thymeleaf

集成权限管理 spring-boot-starter-security

IO

Servlet Web Applications

Spring Security

Spring Session

Spring for GraphQL

如果你想构建GraphQL应用程序,你可以利用Spring Boot对 Spring for GraphQL 的自动配置。Spring for GraphQL项目是基于 GraphQL Java 的。你至少需要 spring-boot-starter-graphql starter。因为GraphQL与传输无关,你还需要在你的应用程序中拥有一个或多个额外的 starter,以便在网络上公开你的GraphQL API。

Spring HATEOAS

SpringBoot应用部署

消息队列 Messaging

容器镜像

最后

参考资料:https://blog.csdn.net/tr1912/article/details/79217132

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值