在上一部分中,我们介绍了 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.xml
或build.gradle
中添加依赖。 - 自动配置 : 创建自动配置类,并在
META-INF/spring.factories
文件中注册。 - 发布: 将模块发布到 Maven 中央仓库或内部仓库。
2. Spring Boot 配置文件
配置文件类型
application.properties
: 默认的属性配置文件。application.yml
: 支持 YAML 格式的配置文件。
多环境配置
- Profile : 通过
spring.profiles.active
属性指定激活的环境配置。 - 多文件 : 使用
application-{profile}.properties
或application-{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 深入理解和实际应用的能力。