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

Spring容器从启动到关闭的注解使用顺序及说明

Spring容器从启动到关闭的注解使用顺序及说明


1. 容器启动阶段

注解@Configuration@ComponentScan
作用

  • @Configuration:标记配置类,声明Spring应用上下文的配置源。
  • @ComponentScan:扫描指定包下的组件(Bean),自动注册为Spring管理的Bean。
@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {
    // 配置类内容
}

2. Bean定义与发现阶段

注解@Component@Service@Repository@Controller
作用

  • 标记类为Spring管理的Bean,触发组件扫描机制将其注册到容器中。
@Service
public class MyService {
    // Service层Bean
}

@Repository
public class UserRepository {
    // 数据库访问层Bean
}

3. 作用域与Bean配置阶段

注解@Scope@Lazy
作用

  • @Scope:定义Bean的作用域(如prototyperequest等,默认singleton)。
  • @Lazy:延迟初始化Bean(在首次使用时创建,而非容器启动时)。
@Scope("prototype")
@Lazy
public class LazyBean {
    // 原型作用域且延迟初始化的Bean
}

4. 依赖注入阶段

注解@Autowired@Qualifier@Value
作用

  • @Autowired:自动注入依赖的Bean。
  • @Qualifier:解决多Bean同类型时的歧义。
  • @Value:注入配置属性(如application.properties中的值)。
@Service
public class MyService {
    @Autowired
    @Qualifier("primaryUserDao")
    private UserDao userDao;

    @Value("${app.config.timeout}")
    private int timeout;
}

5. 初始化阶段

注解@PostConstruct
作用

  • 标记方法在依赖注入完成后执行,用于初始化逻辑(如数据预加载)。
@Service
public class MyService {
    @PostConstruct
    public void init() {
        System.out.println("Bean initialized");
    }
}

6. 容器关闭阶段

注解@PreDestroy
作用

  • 标记方法在容器关闭时执行,用于资源释放(如关闭连接、清理缓存)。
@Service
public class MyService {
    @PreDestroy
    public void cleanup() {
        System.out.println("Bean destroyed");
    }
}

完整生命周期注解使用顺序表

阶段注解作用
容器启动@Configuration, @ComponentScan定义配置类并扫描组件,初始化容器
Bean定义@Component, @Service, etc.标记类为Spring管理的Bean
作用域与配置@Scope, @Lazy定义Bean的作用域和初始化时机
依赖注入@Autowired, @Qualifier, @Value自动注入依赖、解决歧义、注入配置属性
Bean初始化@PostConstruct在依赖注入后执行初始化逻辑
容器关闭@PreDestroy在容器关闭前执行资源清理

关键说明

  1. 顺序依赖

    • @Configuration@ComponentScan 是容器启动的前提条件,必须先定义配置类和扫描路径。
    • @PostConstruct 必须在依赖注入完成后执行,而 @PreDestroy 必须在Bean销毁前执行。
  2. 扩展注解

    • @Primary:在存在多个同类型Bean时,指定默认注入的Bean(需与 @Autowired 配合)。
    • @Profile:按环境(如devprod)选择性注册Bean。
    • @Bean:在配置类中显式定义Bean(需结合 @Configuration 使用)。

总结

Spring容器从启动到关闭的注解使用顺序为:
@Configuration@ComponentScan@Component/Service/...@Scope/@Lazy@Autowired/@Qualifier/@Value@PostConstruct@PreDestroy
通过这些注解,可以清晰地控制Bean的生命周期、依赖关系和作用域,实现灵活的Spring应用管理。

相关文章:

  • LVS的三种工作模式简述
  • 在linux系统上卸载并重新安装Docker及配置国内镜像源指
  • Open Graph 社交卡片介绍:让网站在社群上被漂亮分享
  • jEasyUI 创建自定义视图
  • 通过TIM+DMA Burst 实现STM32输出变频且不同脉冲数量的PWM波形
  • 漏洞发现:AWVS 联动 XRAY 图形化工具.(主动+被动 双重扫描)
  • css 实现闪烁光标
  • DaemonSet 与 Deployment 的主要区别
  • 使用 Layers 扩展你的 Nuxt4 应用
  • VScode-i18n-ally-Vue
  • “线程通信“一个案例
  • 仓储物流中UWB标签实现货物实时追踪的技术路径与品铂科技方案解析
  • MySQL、创建数据库、表、SQL 函数:数学函数、字符串函数、日期函数、聚合函数
  • 怎么使用pm2启动和暂停后端程序(后端架构nodejs+koa)
  • 【学Rust写CAD】14线性插值函数(加入color.rs)
  • Docker 快速入门指南
  • 【安全运营】关于攻击面管理相关概念的梳理(二)
  • Ubuntu 24.04 安装 Docker 详细教程
  • SQL server中的事务与锁
  • 华为HG532路由器RCE漏洞 CVE-2017-17215 复现
  • 沙漠风网站建设/电脑系统优化工具
  • 做网站怎么收费/seo学院
  • 青岛专业设计网站公司/新郑网络推广外包
  • 公司用于做网站的费用怎么做账/品牌宣传活动策划方案
  • 贵州企业网站建设公司/北京seo优化厂家
  • 网站流量平台/如何进行网络营销策划