news 2026/2/15 9:19:02

关于bean的相关知识点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
关于bean的相关知识点

在javase阶段,我们知道了bean的庞大体系
继承,实现。抽象类,多态之类的

1. 核心概念澄清

你说的对,也不完全对:

  • 是的,Bean本质上就是一个Java类的实例(对象)
  • 但在Spring中,Bean不仅仅是简单的类实例,它是由SpringIoC容器管理的完整对象

2. 普通Java对象的生命周期

// 普通Java对象publicclassUserService{publicUserService(){// 1. 构造}publicvoidinit(){// 需要手动调用}publicvoiddestroy(){// 需要手动调用}}// 使用方式UserServiceservice=newUserService();// 自己控制创建时机service.init();// 自己控制初始化// 使用...service.destroy();// 自己控制销毁

特点:

  • 完全由开发者控制生命周期
  • 垃圾回收器负责最终清理
  • 没有统一的依赖注入
  • 没有AOP增强

3. Spring Bean的生命周期

Spring为Bean提供了完整、标准化的生命周期管理

完整生命周期(简化版):

1. Bean定义加载 → 2. 实例化 → 3. 属性赋值 → 4. BeanNameAware → 5. BeanFactoryAware → 6. ApplicationContextAware → 7. @PostConstruct → 8. InitializingBean → 9. 自定义init方法 → 10. Bean就绪可用 → 11. @PreDestroy → 12. DisposableBean → 13. 自定义destroy方法

代码示例:

@ComponentpublicclassUserServiceimplementsBeanNameAware,BeanFactoryAware,ApplicationContextAware,InitializingBean,DisposableBean{// 1. 构造方法(Spring调用)publicUserService(){System.out.println("1. 实例化");}// 2. 属性注入(Spring自动)@AutowiredprivateUserDaouserDao;// 3. BeanNameAware@OverridepublicvoidsetBeanName(Stringname){System.out.println("3. 设置Bean名称: "+name);}// 4. BeanFactoryAware@OverridepublicvoidsetBeanFactory(BeanFactorybeanFactory){System.out.println("4. 设置BeanFactory");}// 5. ApplicationContextAware@OverridepublicvoidsetApplicationContext(ApplicationContextcontext){System.out.println("5. 设置ApplicationContext");}// 6. @PostConstruct@PostConstructpublicvoidpostConstruct(){System.out.println("6. @PostConstruct");}// 7. InitializingBean@OverridepublicvoidafterPropertiesSet(){System.out.println("7. afterPropertiesSet");}// 8. 自定义init方法@Bean(initMethod="customInit")publicvoidcustomInit(){System.out.println("8. 自定义init方法");}// 9. 使用阶段...// 10. @PreDestroy@PreDestroypublicvoidpreDestroy(){System.out.println("10. @PreDestroy");}// 11. DisposableBean@Overridepublicvoiddestroy(){System.out.println("11. DisposableBean.destroy()");}// 12. 自定义destroy方法@Bean(destroyMethod="customDestroy")publicvoidcustomDestroy(){System.out.println("12. 自定义destroy方法");}}

4. 关键区别对比

方面普通Java对象Spring Bean
创建控制开发者显式newSpring容器负责
依赖注入手动setter/构造器自动注入(@Autowired)
初始化手动调用init方法多种初始化机制
作用域单一作用域多种作用域(singleton, prototype, request等)
AOP增强需要手动实现自动代理,实现横切关注点
销毁管理依赖GC或手动调用统一生命周期管理
配置方式硬编码多种配置(XML、注解、JavaConfig)

5. Spring Bean的特殊能力

A. 依赖注入(DI)

@ComponentpublicclassOrderService{// Spring自动注入依赖@AutowiredprivatePaymentServicepaymentService;@AutowiredprivateUserServiceuserService;}

B. AOP代理

@ServicepublicclassProductService{@Transactional// 自动事务管理publicvoidsaveProduct(Productproduct){// 这个方法会被Spring AOP增强}}

C. 作用域管理

@Component@Scope("prototype")// 每次获取都是新实例publicclassShoppingCart{// ...}@Component@Scope("singleton")// 默认,单例publicclassConfigService{// ...}

D. 条件化创建

@Component@ConditionalOnProperty(name="feature.enabled",havingValue="true")publicclassFeatureService{// 只有配置了feature.enabled=true才创建}

6. 实际意义

为什么这种区别重要?

  1. 控制反转(IoC):应用的控制权从开发者转移到了框架
  2. 关注点分离:开发者专注于业务逻辑,框架负责基础设施
  3. 一致性:所有Bean都有标准化的生命周期
  4. 可扩展性:通过生命周期钩子可以轻松扩展功能
  5. 测试友好:依赖注入让单元测试更容易

7. 简单比喻

  • 普通Java对象:像自己买菜、洗菜、炒菜、洗碗
  • Spring Bean:像去餐厅点菜,餐厅负责所有流程管理

总结:Spring Bean确实是一个Java类的实例,但它是被Spring容器赋予了额外能力、按照特定生命周期管理的"增强版"对象。这种管理带来了依赖注入、AOP、统一配置等诸多便利,是现代Java应用开发的重要基石。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/7 10:05:28

关于spring的全量认识

这里聚焦一个问题,到底对spring产生怎么样的认识,才算有个稍微全面的认识。 本文章不适合初学者看。适合想集大成者看。 1.工程引入与配置层面: 什么版本的spring 2.代码层实际应用层面: spring提供了哪些机制。供我们使用 1.ioc …

作者头像 李华
网站建设 2026/2/11 2:16:06

B站视频内容提取神器:5秒读懂长视频的AI革命

B站视频内容提取神器:5秒读懂长视频的AI革命 【免费下载链接】BilibiliSummary A chrome extension helps you summary video on bilibili. 项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliSummary 你是否曾经面对B站上几十分钟的教程视频&#xff0c…

作者头像 李华
网站建设 2026/2/10 16:09:45

OpCore-Simplify终极指南:一键实现专业级Hackintosh自动化配置

OpCore-Simplify终极指南:一键实现专业级Hackintosh自动化配置 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 对于想要体验macOS系统但面…

作者头像 李华
网站建设 2026/2/10 19:35:38

OpenCore智能助手:新手也能轻松搭建黑苹果系统

OpenCore智能助手:新手也能轻松搭建黑苹果系统 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpenCore智能助手是一款革命性的黑苹果系统…

作者头像 李华
网站建设 2026/2/8 5:25:59

OpCore Simplify:告别繁琐配置,3分钟搞定黑苹果EFI

OpCore Simplify:告别繁琐配置,3分钟搞定黑苹果EFI 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的OpenCore配置发…

作者头像 李华
网站建设 2026/2/8 1:58:50

Realtek RTL8125 2.5GbE网卡驱动完整安装手册

Realtek RTL8125 2.5GbE网卡驱动完整安装手册 【免费下载链接】realtek-r8125-dkms A DKMS package for easy use of Realtek r8125 driver, which supports 2.5 GbE. 项目地址: https://gitcode.com/gh_mirrors/re/realtek-r8125-dkms 还在为Linux系统无法识别高速网络…

作者头像 李华