程序员社区

Spring Boot 基础入门

Spring Boot 基础入门

1. 什么是 Spring Boot

1.1 Spring Boot 概述

Spring Boot 的设计目的是简化 Spring 应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

Spring Boot 默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spring Boot 整合了所有的框架,通过少量的代码就能创建一个独立的、产品级别的 Spring 应用

在这里插入图片描述

简单理解 Spring Boot 是一个集成了 Spring 各种组件的快速开发框架

1.2 Spring Boot 的特点

  • 使用 Spring 项目引导页面可以在几秒快速构建一个项目;
  • 方便对外输出各种形式的服务,如 REST API、WebSocket、Web、Streaming、Tasks;
  • 非常简洁的安全策略集成;
  • 支持关系数据库和非关系数据库;
  • 支持运行期间内嵌容器,如 Tomcat、Jetty;
  • 自动管理依赖;

1.3 Spring Boot 与微服务

Spring Boot 的一系列特性有助于实现微服务架构的落地,从目前众多的技术栈对比来看,它是 Java 领域微服务架构最优落地技术,没有之一。

Spring Cloud 依赖于 Spring Boot。

Spring Boot 专注于快速开发个体微服务,Spring Cloud 是关注全局的微服务协调治理框架。

2. 使用 maven 搭建 SpringBoot 开发环境

Spring Boot 是一个快速开发框架,可以迅速搭建出一套基于 Spring 框架体系的应用,是 Spring Cloud 的基础。

Spring Boot 开启了各种自动装配,从而简化代码开发,不需要编写各种配置文件,只需要引入相关依赖就可以迅速搭建一个应用。

特点:

  • 不需要 web.xml;
  • 不需要 mybatis.xml、spring.xml、springmvc.xml 等配置文件;
  • 不需要 Tomcat,SpringBoot 内嵌了 tomcat;
  • 不需要配置 JSON 解析,支持 REST ful 架构;
  • 个性化配置非常简单;

如何使用 maven 搭建 SpringBoot 开发环境?

1、创建 maven 工程,导入相关依赖;

<?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.trainingl</groupId>
    <artifactId>springboot01</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--继承父包:springboot启动器-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
    </parent>

    <dependencies>
        <!-- springmvc -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- lombok开发工具 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>

2、创建实体类 com.trainingl.entity.Student

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private Long id;
    private String name;
    private Integer age;
}

3、创建持久层接口 StudentRepository;

import com.trainingl.entity.Student;

import java.util.Collection;

public interface StudentRepository {
    public Collection<Student> findAll();
    public Student findById(Long id);
    public void saveOrUpdate(Student student);
    public void deleteById(Long id);
}

4、StudentRepositoryImpl

import com.trainingl.entity.Student;
import com.trainingl.repository.StudentRepository;
import org.springframework.stereotype.Repository;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

@Repository
public class StudentRepositoryImpl implements StudentRepository {

    private static Map<Long,Student> studentMap;
	// 这里不连接数据库,直接在项目初始化时生成数据
    static {
        studentMap = new HashMap<>();
        studentMap.put(1L, new Student(1L,"张三", 12));
        studentMap.put(2L, new Student(2L, "李四", 24));
        studentMap.put(3L, new Student(3L, "王五", 15));
    }

    @Override
    public Collection<Student> findAll() {
        //返回数据信息
        return studentMap.values();
    }

    @Override
    public Student findById(Long id) {
        return studentMap.get(id);
    }

    @Override
    public void saveOrUpdate(Student student) {
        studentMap.put(student.getId(), student);
    }

    @Override
    public void deleteById(Long id) {
        studentMap.remove(id);
    }
}

5、省略 service 层,直接考虑 StudentHandler 控制器(Controller);

import com.trainingl.entity.Student;
import com.trainingl.repository.Impl.StudentRepositoryImpl;
import com.trainingl.repository.StudentRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Collection;

@RestController
@RequestMapping("/student")
public class StudentHandler {
    @Autowired
    private StudentRepository studentRepository;

    //查询所有信息
    @GetMapping("/findAll")
    public Collection<Student> findAll(){
        return studentRepository.findAll();
    }

    //根据id查找
    @GetMapping("/findById/{id}")
    public Student findById(@PathVariable Long id){
        return studentRepository.findById(id);
    }

    //添加student信息
    @PostMapping("/save")
    public void save(@RequestBody Student student){
        System.out.println(student);
        studentRepository.saveOrUpdate(student);
    }

    //更新student信息
    @PutMapping("/modify")
    public void update(@RequestBody Student student){
        studentRepository.saveOrUpdate(student);
    }

    //根据id删除student信息
    @DeleteMapping("/deleteById/{id}")
    public void delete(@PathVariable Long id){
        studentRepository.deleteById(id);
    }
}

创建全局配置文件:src/main/resources/application.yml,该文件可以修改端口号、数据源的配置信息等;

server:
	post:8080

6、Application 启动类

package com.trainingl;

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

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

@SpringBootApplication 表示当前类是 SpringBoot 的入口,Application 类的存放位置必须是其他业务代码存放位置的父级目录。运行 Application 的 main 方法即可启动项目。

项目基本结构如下:

在这里插入图片描述

项目启动控制台的输出信息如下:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.5.RELEASE)
 
 2022-01-28 13:47:38.987  INFO 13540 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
 2022-01-28 13:47:38.990  INFO 13540 --- [           main] com.trainingl.Application                : Started Application in 3.174 seconds (JVM running for 5.853)

赞(0) 打赏
未经允许不得转载:IDEA激活码 » Spring Boot 基础入门

一个分享Java & Python知识的社区