当前位置: 首页 > news >正文

SpringBoot 概述

目录

一、什么是SpringBoot

二、核心特性

2.1 自动配置(Auto-Configurantion)

2.2 起步依赖(Starter Dependencies)

2.3 内嵌服务器(Embedded Server)

2.4 生产级特性

三、Spring Boot 架构

3.1 核心组件

3.2 启动流程

四、项目结构约定

五、常用模块与整合

5.1 Web开发

5.2 数据访问

5.3 安全控制(Spring Security)

5.4 缓存

六、配置文件与多环境

6.1 配置文件格式

6.2 多环境配置

七、微服务与Spring Cloud


一、什么是SpringBoot

  • 定义:Spring Boot 是Spring生态中的一个子项目,目的是简化 Spring 应用的初始搭建和开发过程,通过 “约定大于配置” 的原则,提供快速、开箱即用的开发体验
  • 目标:解决传统Spring开发中复杂的配置和依赖管理问题,让开发者专注于业务逻辑。

二、核心特性

2.1 自动配置(Auto-Configurantion)

  • 原理:根据项目中的依赖(如 spring-boot-starter-web spring-boot-starter-data-jpa),自动装配所需的Bean和组件。
  • 示例
    • 如果项目中包含 spring-boot-starter-web,Spring Boot 会自动装配内嵌Tomcat 和 Spring MVC。
    • 如果包含 spring-boot-starter-data-jpa,则自动配置数据源和JPA相关Bean。
  • 自定义:通过 application.properties @configuration 类覆盖默认配置。

2.2 起步依赖(Starter Dependencies)

  • 作用:预定义一组依赖的集合,简化Maven/Gradle的依赖管理。
  • 常用 Starter
    • spring-boot-starter-web:Web开发(RESTful API)。
    • spring-boot-starter-data-jpa:数据库访问(JPA + Hibernate).
    • spring-boot-starter-security:安全控制
    • spring-boot-starter-test:单元测试

2.3 内嵌服务器(Embedded Server)

  • 支持服务器:Tomcat(默认)、Jetty、Undertow。
  • 优势:无需部署WAR包,直接通过 java -jar 运行JAR文件。

2.4 生产级特性

  • 健康检查: 集成Spring Boot Actuator,提供 /actuator/health 端点。
  • 监控指标:通过Micrometer 支持 Prometheus、Graphite等。
  • 外部化配置:支持多环境配置(如 application-dev.properties)。

三、Spring Boot 架构

3.1 核心组件

  • 主类:通过 @SpringBootApplication 注解标记的启动类,包含 main 方法。
  • 自动配置模块: spring-boot-autoconfigure 包,基于条件注解(如 @conditionalOnClass--满足条件才加载)动态加载配置。
  • Starter模块:提供预集成的依赖管理。

3.2 启动流程

  1. 加载 SpringApplication 并初始化。
  2. 读取 application.properties 或 application.yml 。
  3. 扫描 @Component、 @Service 等注解,创建Bean。
  4. 根据依赖自动配置(如数据源、Web MVC)。
  5. 启动内服务器并监听端口

四、项目结构约定

  • 默认目录结构(Maven/Gradle):
src/
  main/
    java/
      com.example.demo/  # 主包
        DemoApplication.java  # 启动类
    resources/
      static/    # 静态资源(CSS/JS)
      templates/  # 模板文件(Thymeleaf)
      application.properties  # 配置文件
  test/           # 单元测试

五、常用模块与整合

5.1 Web开发

  • RESTful API:
@RestController
public class UserController {
    @GetMapping("/user/{id}")
    public User getUser(@PathVariable Long id) {
        // 业务逻辑
    }
}
  • 参数校验:使用 @Valid

5.2 数据访问

  • MyBatis整合:
mybatis:
  mapper-locations: classpath:mapper/*.xml

5.3 安全控制(Spring Security)

  • 配置登录和权限:
@Configuration
public class SecurityConfig {
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/admin/**").hasRole("ADMIN")
            .anyRequest().authenticated()
            .and().formLogin();
        return http.build();
    }
}

5.4 缓存

  • 使用Spring Cache抽象:
@Cacheable("users")
public User getUser(Long id) {
    // 查询数据库
}

六、配置文件与多环境

6.1 配置文件格式

  • application.properties :
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/demo
  • application.yml(更简洁):
server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/demo

6.2 多环境配置

  • 通过文件名区分环境
    • application-dev.properties(开发环境)
    • application-st.properties(测试环境)
    • application-prod.properties(生产环境)
  • 激活指定环境 -- bash
java -jar app.jar --spring.profiles.active=prod

七、微服务与Spring Cloud

  • Spring Cloud 整合
    • 服务注册与发现:Eureka、Consul、Nacos
    • 配置中心:Spring Cloud Config
    • API 网关:Spring Cloud Gateway
    • 负载均衡:Ribbon 或 Spring Cloud LoadBalancer

相关文章:

  • Transformer-BiLSTM、Transformer、CNN-BiLSTM、BiLSTM、CNN五模型多变量回归预测
  • 算力100问☞第98问:算力鸿沟会加剧数字不平等吗?
  • 常用正则表达式-MAC 地址
  • 安卓的布局方式
  • 【MySQL基础】聚合函数从基础使用到高级分组过滤
  • 【今日半导体行业分析】2025年3月30日
  • vue2,vue3,vue3 + vite 动态加载图片的方式
  • Go 语言规范学习(6)
  • vue3新增特性(二)
  • 探秘Transformer系列之(20)--- KV Cache
  • PCIe 调试 执行retrain
  • [Linux]解决虚拟机 ubantu系统下网络的问题
  • android studio 使用Java xml开发app
  • NUUO摄像头debugging_center_utils命令执行漏洞
  • JS 生成批量投入数据用的csv文件
  • 是否每一层之间都要线性变换和激活函数?
  • 记一次snmp_exporter/generator生成yml报错问题修复
  • 【小兔鲜】day01 项目、Vue3介绍、组合式API、小案例
  • [python]minepy安装后测试代码
  • cpp栈操作