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

教案怎么写模板抖音seo搜索引擎优化

教案怎么写模板,抖音seo搜索引擎优化,长沙有什么好玩的游乐场,建设网站一般要多少钱1. Spring Bean 生命周期概述 Spring 框架中,Bean 的生命周期是其核心机制之一。了解 Bean 的完整生命周期有助于开发者更好地控制对象的创建、初始化、使用和销毁过程,尤其是在需要扩展、增强或定制 Bean 行为时,如资源加载、AOP 代理、日志…

1. Spring Bean 生命周期概述

Spring 框架中,Bean 的生命周期是其核心机制之一。了解 Bean 的完整生命周期有助于开发者更好地控制对象的创建、初始化、使用和销毁过程,尤其是在需要扩展、增强或定制 Bean 行为时,如资源加载、AOP 代理、日志记录等。

Spring Bean 的生命周期通常包括以下阶段(以 Singleton 作用域 为例):

阶段描述可干预方式开发中可能的操作
1. 实例化通过反射创建 Bean 实例无需干预通常由 Spring 自动完成
2. 属性注入注入依赖属性(字段、构造器、setter)无需干预通过 @Autowired@Resource 注入依赖
3. 前处理(BeforeInit):

在初始化方法之前执行;

执行方法BeanPostProcessor#postProcessBeforeInitialization

实现BeanPostProcessor 接口修改 Bean 属性、创建代理、日志记录
4. 初始化方法执行 @PostConstructInitializingBean#afterPropertiesSet()、或 init-method使用注解或配置资源加载(如数据库连接)、校验逻辑、预处理
5. 后处理(AfterInit):

在初始化方法之后执行;

执行方法BeanPostProcessor#postProcessAfterInitialization

实现BeanPostProcessor 接口AOP 代理创建、权限控制、日志记录
6. 使用阶段Bean 已准备好,可供应用使用无需干预业务调用、依赖注入
7. 销毁方法容器关闭时执行 @PreDestroyDisposableBean#destroy()、或 destroy-method使用注解或配置资源释放(如关闭连接池、停止线程)

2. Spring Bean生命周期的代码演示

2.1 代码示例

step1. 定义一个 Bean

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;@Component
public class MyBean implements InitializingBean, DisposableBean {public MyBean() {System.out.println("1. MyBean 实例化");}public void initMethod() {System.out.println("4. init-method: 初始化方法");}@PostConstructpublic void postConstruct() {System.out.println("4. @PostConstruct: 初始化方法");}@Overridepublic void afterPropertiesSet() throws Exception {System.out.println("4. InitializingBean#afterPropertiesSet: 初始化方法");}@PreDestroypublic void preDestroy() {System.out.println("7. @PreDestroy: 销毁方法");}@Overridepublic void destroy() throws Exception {System.out.println("7. DisposableBean#destroy: 销毁方法");}
}

step2. 定义一个 BeanPostProcessor

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.stereotype.Component;@Component
public class MyBeanPostProcessor implements BeanPostProcessor {@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {System.out.println("3. BeanPostProcessor#postProcessBeforeInitialization: " + beanName);return bean;}@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {System.out.println("5. BeanPostProcessor#postProcessAfterInitialization: " + beanName);return bean;}
}

step3. 配置 Bean 的 init 和 destroy 方法(可选)

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class AppConfig {@Bean(initMethod = "initMethod", destroyMethod = "destroy")public MyBean myBean() {return new MyBean();}
}

step4. 主启动类(Spring Boot 示例)

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;@SpringBootApplication
public class Application {public static void main(String[] args) {ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);MyBean myBean = context.getBean(MyBean.class);System.out.println("6. Bean 已使用");// 关闭容器以触发销毁方法context.close();}
}

启动主类后,控制台输出顺序(部分)示例

1. MyBean 实例化
3. BeanPostProcessor#postProcessBeforeInitialization: myBean
4. @PostConstruct: 初始化方法
4. InitializingBean#afterPropertiesSet: 初始化方法
4. init-method: 初始化方法
5. BeanPostProcessor#postProcessAfterInitialization: myBean
6. Bean 已使用
7. @PreDestroy: 销毁方法
7. DisposableBean#destroy: 销毁方法

2.2 注意事项

  • 多个初始化/销毁方法:Spring 支持多种方式定义初始化和销毁方法,按照以下优先级执行:
    • @PostConstruct > InitializingBean#afterPropertiesSet() > init-method
    • @PreDestroy > DisposableBean#destroy() > destroy-method
  • Bean 作用域影响
    • @Scope("prototype") 的 Bean 不会执行 destroy 方法,除非手动调用 destroy()
  • BeanPostProcessor 顺序:如果有多个 BeanPostProcessor,可通过 @Order 或实现 Ordered 接口控制执行顺序。

3. 总结

Spring Bean 的生命周期是一个清晰且可扩展的过程。通过理解每个阶段的功能和干预方式,开发者可以灵活地控制 Bean 的行为,实现诸如 AOP、日志、资源管理等高级功能。掌握生命周期不仅有助于调试,还能帮助构建更加健壮和可维护的 Spring 应用。相关应用场景举例如下:

场景使用阶段
日志记录BeanPostProcessor
资源加载初始化方法(@PostConstruct
代理对象创建postProcessAfterInitialization(AOP 实现)
数据库连接关闭销毁方法(@PreDestroy
权限控制postProcessBeforeInitialization

4.相关文档

BeanPostProcessor用法-笔记-CSDN博客

InitializingBean接口和@PostConstruct-笔记_postconstruct和initializingbean-CSDN博客

SpringBoot启动后自动执行方法的各种方式-笔记_springboot项目启动自动调用方法-CSDN博客

Spring的xxxAware接口工作原理-笔记-CSDN博客

http://www.dtcms.com/a/570267.html

相关文章:

  • 算法题(254):灾后重建
  • 理解全连接层:深度学习中的基础构建块
  • vs网站开发教程厦门模板建站
  • c sql网站开发wordpress搜索无效
  • 如何防止 iOS 应用资源文件被替换 工程化防护与多工具组合实战
  • 网站在线支付接口网络推广经验分享
  • 18-Python 操作 Redis 实战指南:redis-py 客户端全解析与场景落地
  • 【Android 性能分析】延伸阅读:关于异常捕获
  • 地方社区网站 备案十堰网站建设联系电话
  • 赣榆区城乡建设局网站网站优化工作
  • Python每日一练---第五天:轮转数组
  • 建设银行档案管理网站wordpress divi布局
  • p2p网站审批营销网站建设培训
  • 视频融合平台EasyCVR:打造智慧酒店一体化安防体系,筑牢安全管理防线
  • 能领免做卡的网站html5响应式设计公司网站模板整站html源码下载
  • 从需求到上线:体育比分系统完整开发流程详解
  • 微信二维码网站制作网站开发建设推荐
  • 如何编写VR大空间《时空探秘・恐龙纪元》剧本
  • 牙科医院网站建设方案全网霸屏推广系统
  • IPA 一键加密工具实战,用多工具组合把加固做成一次性与可复用的交付能力(IPA 一键加密/Ipa Guard CLI/成品加固)
  • 官方网站建设哪家公司好中国会议营销网站
  • 贵阳网站制作软件中国建设银行网站企业网银收费
  • kotlin常用语法点理解
  • STM32是什么?
  • 提高网站的访问速度网站后缀net
  • 安卓网站开发c 网站开发 书
  • 网站编辑 图片批量免费素材网站无版权
  • 给网站网站做优化重庆网站编辑职业学校
  • 【双机位A卷】华为OD笔试之【排序】双机位A-银行插队【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
  • 巴彦淖尔网站建设公司互联网服务公司有哪些