当前位置: 首页 > 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.rkmt.cn/news/51268.html

相关文章:

  • C# 封装、继承、抽象、接口
  • 智能床垫品牌全面选品指南:2025年11月最新TOP5榜单深度解析
  • 基于Qt实现的窗口半透明流动背景
  • 2025年11月冷媒剂厂家评测榜:从资质到应用全场景解析
  • 分布式计算通信原语的抽象模型
  • 2025/11/16
  • 数据结构——二十四、图(王道408) - 实践
  • C# Avalonia 18- ControlTemplates - ColorPickerUserControlTest
  • Spring AI Alibaba 项目源码学习(九)-其他继承BaseAgent
  • Linux进程状态 - 教程
  • mybatis_generate_demo
  • 换歌换歌
  • GaN 器件第三象限导通特性
  • Why did Hitler become a greater Napoleon?
  • Qt编写28181推流分发服务/统计访问数量/无人观看超时关闭/等待重新点播/复用点播
  • React Native创建AndroidIOS流程完整指南
  • Ducky - BPMN 工作流管理系统
  • 图论建模问题
  • 2025年甘肃广告策划服务综合推荐排行榜
  • 2025年甘肃兰州比较好的广告物料制作服务团队
  • wordpress批量删除文章
  • mivlus:下载all-MiniLM-L6-v2语言模型
  • 单核超 i9、多核追 i5,2024 Mac mini M4
  • 2025年质量好的金属防锈漆行业内口碑厂家排行榜
  • 2025年知名的破碎机厂家选购指南与推荐
  • 2025年优质的光学真空镀膜机厂家实力及用户口碑排行榜
  • 完整教程:OSP-0.3.1开源软件包的解压缩与分析
  • 30.Python自动获取酷狗音乐工具
  • 2025年专业的自动液压压滤机TOP品牌厂家排行榜
  • 2025年靠谱的导热油电加热器厂家最新权威实力榜