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

Spring 中的 @Configuration 注解

 

@Configuration 是 Spring 框架中用于定义配置类的重要注解。它的主要作用是替代传统的 XML 配置文件,通过 Java 代码来定义和管理 Spring 容器中的 Bean。

基本用法

使用 @Configuration 注解标记一个类,表示该类是一个配置类。配置类中可以包含多个被 @Bean 注解的方法,这些方法会被 Spring 容器扫描并注册为 Bean。例如:

@Configuration
public class AppConfig {
   @Bean
   public UserRepository userRepository() {
       return new UserRepository();
   }
   @Bean
   public UserService userService() {
       return new UserService(userRepository());
   }
}

在上述代码中,AppConfig 是一个配置类,定义了两个 Bean:userRepository 和 userService

高级用法

组件扫描:可以结合 @ComponentScan 注解,自动扫描指定包中的组件。

@Configuration
@ComponentScan(basePackages = "com.example")
  public class AppConfig {
}

导入其他配置类:通过 @Import 注解,可以将多个配置类组合在一起。

@Configuration
@Import(DatabaseConfig.class)
public class AppConfig {
}

@Configuration
public class DatabaseConfig {
  @Bean
  public DataSource dataSource() {
    return new DriverManagerDataSource();
  }
}

条件加载:使用 @Conditional 注解,可以根据条件决定是否加载某个配置类。

@Configuration
@Conditional(CustomCondition.class)
public class AppConfig {
}

实际应用场景

数据源配置:可以通过 @Configuration 配置数据源。

@Configuration
public class DataSourceConfig {
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUsername("root");
dataSource.setPassword("password");
return dataSource;
}
}

Web 安全配置:在 Spring Security 中,使用 @Configuration 配置安全规则。

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

注意事项

  1. @Configuration 注解的类不能是 final 类型,也不能是匿名类。

  2. 嵌套的配置类必须是静态类。

  3. @Bean 默认作用域是单例,可以通过 @Scope("prototype") 修改为原型作用域。

总结

@Configuration 是 Spring 框架中用于定义配置类的核心注解,能够替代传统的 XML 配置文件。它支持组件扫描、条件加载、Bean 生命周期管理等功能,广泛应用于数据源配置、Web 安全配置等场景。通过 @Configuration,开发者可以以更直观和灵活的方式管理 Spring 容器中的 Bean。

http://www.jsqmd.com/news/41907/

相关文章:

  • PLUG2:STM32启动流程 - LI,Yi
  • C# 封装、继承、抽象、接口
  • python类中的__setattr__
  • 跨域问题解决方案的弃子——JSONP
  • 2025年11月智能床垫品牌TOP5推荐:服务器系统软件办公集成优化
  • CPU,GPU,DSP,FPGA,ASIC
  • 智能床垫品牌全面选品指南:2025年11月最新TOP5榜单深度解析
  • DeepCFD+:一种工业级 CFD 代理模型训练框架【深度学习+流体力学】 - 指南
  • 基于Qt实现的窗口半透明流动背景
  • 2025河南郑州锅炉设备/改造/安装/维修最新TOP5推荐:质造升级驱动产业新发展,河南中原地区优选
  • 2025年11月冷媒剂厂家推荐榜:五家主流品牌综合对比与评价
  • 2025年11月防冻液厂家推荐榜:权威评测五强对比一览
  • 2025年11月防冻液厂家对比榜:五强性能数据与资质验证全记录
  • steam营销分析
  • 2025年11月冷媒剂厂家评测榜:从资质到应用全场景解析
  • 心情助手3.07正式版,吃喝镇
  • 在ec2上部署Qwen2.5omini和Qwen3omini模型
  • 分布式计算通信原语的抽象模型
  • 【shell】每日shell练习:安全日志入侵检测/专业的系统配置文件合规检查
  • 2025年第39周数字取证与事件响应技术动态
  • 第三次算法作业
  • 2025/11/16
  • 实用指南:《vector.pdf 深度解读:vector 核心接口、扩容机制与迭代器失效解决方案》
  • 【MX-S11】梦熊 NOIP 2025 模拟赛 3 WAOI R7 FeOI R6.5(同步赛)总结分析
  • 2025 年 11 月旅游船厂家推荐排行榜,新能源电动旅游船,画舫仿古双层豪华旅游船,定制旅游船,玻璃钢钢质铝合金旅游船公司精选
  • 2025 年 11 月观光船厂家推荐排行榜,新能源观光船,电动观光船,画舫观光船,仿古观光船,双层观光船,豪华观光船,定制观光船,玻璃钢观光船,钢质观光船,铝合金观光船公司推荐
  • [Win] [ffmpeg] Win下如何安装ffmpeg
  • 开发日记
  • [Win] [包管理器] powershell 安装 choco
  • win11 报错