Spring Boot 面试热点(二)

在上一部分中,我们介绍了 Spring Boot 的优势、项目结构和自动配置原理。本部分将继续探讨 Spring Boot 的 Starter、配置文件和安全机制,这些都是面试中常见的问题。

1. Spring Boot Starter

常用 Starter

  • spring-boot-starter-web: 用于构建 web 应用,包含 Spring MVC 和内嵌的 Tomcat 服务器。
  • spring-boot-starter-data-jpa: 用于与数据库交互,包含 Hibernate 和 Spring Data JPA。
  • spring-boot-starter-security: 提供安全认证和授权功能。
  • spring-boot-starter-test: 提供常用的测试库,如 JUnit、Mockito 等。

自定义 Starter

  • 创建模块: 创建一个新的 Maven/Gradle 模块。
  • 添加依赖 : 在模块的 pom.xmlbuild.gradle 中添加依赖。
  • 自动配置 : 创建自动配置类,并在 META-INF/spring.factories 文件中注册。
  • 发布: 将模块发布到 Maven 中央仓库或内部仓库。

2. Spring Boot 配置文件

配置文件类型

  • application.properties: 默认的属性配置文件。
  • application.yml: 支持 YAML 格式的配置文件。

多环境配置

  • Profile : 通过 spring.profiles.active 属性指定激活的环境配置。
  • 多文件 : 使用 application-{profile}.propertiesapplication-{profile}.yml 文件管理不同环境的配置。
properties 复制代码
# application.properties
spring.profiles.active=dev

# application-dev.properties
server.port=8081

# application-prod.properties
server.port=8080

外部配置

  • 命令行参数 : 通过命令行参数传递配置,如 --server.port=8080
  • 环境变量 : 通过环境变量配置,如 export SERVER_PORT=8080
  • 配置中心: 使用 Spring Cloud Config 等配置中心管理配置。

3. Spring Boot 安全

基本认证

  • 依赖 : 添加 spring-boot-starter-security 依赖。
  • 配置: 默认提供基于内存的用户名和密码认证。

自定义安全配置

  • 扩展 WebSecurityConfigurerAdapter : 自定义安全配置类,重写 configure 方法。

    java复制代码import org.springframework.context.annotation.Configuration;
    import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

    @Configuration
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
    http
    .authorizeRequests()
    .antMatchers("/public/**").permitAll()
    .anyRequest().authenticated()
    .and()
    .formLogin()
    .and()
    .httpBasic();
    }
    }

JWT 认证

  • 依赖 : 添加 jjwt 依赖。
  • 生成和验证: 使用 JWT 生成和验证用户令牌,实现无状态认证。

结语

本文介绍了 Spring Boot 的 Starter、配置文件和安全机制,这些都是 Spring Boot 开发中非常重要的部分。通过熟练掌握这些内容,你可以在面试中展示出对 Spring Boot 深入理解和实际应用的能力。

相关推荐
LYFlied5 分钟前
【每日算法】LeetCode 17. 电话号码的字母组合
前端·算法·leetcode·面试·职场和发展
全靠bug跑29 分钟前
Spring Cloud OpenFeign 实战三部曲:快速集成 · 连接池优化 · 客户端抽取
java·spring boot·openfeign
北城以北88881 小时前
Spring定时任务与Spring MVC拦截器
spring boot·spring·mvc
Victor3561 小时前
Netty(20)如何实现基于Netty的WebSocket服务器?
后端
缘不易1 小时前
Springboot 整合JustAuth实现gitee授权登录
spring boot·后端·gitee
Kiri霧1 小时前
Range循环和切片
前端·后端·学习·golang
WizLC2 小时前
【Java】各种IO流知识详解
java·开发语言·后端·spring·intellij idea
Mr.朱鹏2 小时前
SQL深度分页问题案例实战
java·数据库·spring boot·sql·spring·spring cloud·kafka
Victor3562 小时前
Netty(19)Netty的性能优化手段有哪些?
后端
爬山算法2 小时前
Netty(15)Netty的线程模型是什么?它有哪些线程池类型?
java·后端