Spring Boot 配置类详解
2025/12/2大约 2 分钟
📝 Spring Boot 配置类 (@Configuration / @Bean) 精华笔记
一、什么是配置类?
配置类就是用来创建和管理 Bean 的类。,提前配置好一些 Bean,方便在应用中使用。直接@Autowired 注入即可。
在 Spring Boot 中,相当于以前的 XML 配置文件。
🟦 @Configuration —— 配置类核心注解
✔ 作用
- 标注在类上,告诉 Spring:这是一个配置类。
- 类内部的方法可以使用
@Bean注册 Bean。 - 被扫描后,配置类本身就是一个 Spring Bean。
🟩 @Bean —— 注册 Bean 的注解
✔ 作用
- 标注在
@Configuration类中的方法上。 - 方法的 返回对象 会被注册为 Spring Bean。
- 方法名 = Bean 名称(可自定义)。
✔ 示例
@Configuration
public class AppConfig {
@Bean
public UserService userService() {
UserService userService = new UserService();
userService.setDataSource(dataSource());
return userService;
}
@Bean
public DataSource dataSource() {
return new BasicDataSource();
}
}✔ 关键点
dataSource()调用多次也只会创建 1 个对象(CGLIB 代理保证)。- 常用于第三方类、配置对象、工具类等 Bean 的注册。
❓ 为什么 WebMvcConfiguration 不需要 @Bean?
因为:
✅ 1. WebMvcConfiguration 本身就是一个 Bean
它有 @Configuration 注解,因此会被组件扫描自动注册到 Spring 容器。
配置类本身被 Spring 托管,不需要再用 @Bean 手动注册它。
🟧 WebMvcConfiguration 示例解释
@Configuration
@Slf4j
public class WebMvcConfiguration implements WebMvcConfigurer {
@Autowired
private JwtTokenInterceptor jwtTokenInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
log.info("开始注册自定义拦截器...");
registry.addInterceptor(jwtTokenInterceptor)
.addPathPatterns("/**")
.excludePathPatterns(
"/user/login",
"/wechat/**",
"/swagger-resources/**",
"/v3/api-docs/**",
"/error"
);
}
}✔ 为什么能自动生效?
因为:
@Configuration→ 自动成为 Spring Bean- 实现
WebMvcConfigurer→ Spring Boot 自动调用回调方法
如addInterceptors()、addResourceHandlers()等
✔ WebMvcConfigurer 通常用于:
- 注册拦截器
addInterceptors - 静态资源处理
addResourceHandlers - CORS 配置
- 参数解析器
- 消息转换器
