1. Spring Bean生命周期全景解析
作为Java开发者,深入理解Spring框架中Bean的生命周期是掌握Spring核心机制的关键。很多初学者在面对网络上各种关于Spring生命周期的资料时,常常感到困惑和迷茫。本文将从一个资深Java工程师的视角,带你彻底掌握Spring Bean从诞生到消亡的全过程。
Spring Bean的生命周期可以简化为四个核心阶段:实例化(Instantiation)、属性赋值(Populate)、初始化(Initialization)和销毁(Destruction)。这四个阶段构成了Bean生命周期的骨架,而各种扩展点则像肌肉一样附着在这个骨架上,共同构成了完整的生命周期体系。
理解生命周期的关键在于:先掌握主干,再学习分支。就像学习一棵树,先看清主干,再研究枝叶。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Bean定义阶段详解
2.1 元信息配置方式
Spring提供了多种方式来定义Bean的元信息,每种方式都有其适用场景。
2.1.1 面向资源的配置
XML配置是最传统的方式,适合老项目或需要高度配置化的场景:
xml复制<bean id="user" class="com.example.User">
<property name="name" value="张三"/>
<property name="age" value="25"/>
</bean>
对应的Java代码加载方式:
java复制DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
reader.loadBeanDefinitions(new ClassPathResource("beans.xml"));
Properties配置相对简单但功能有限:
properties复制user.(class)=com.example.User
user.name=张三
user.age=25
加载Properties配置的代码示例:
java复制PropertiesBeanDefinitionReader reader = new PropertiesBeanDefinitionReader(beanFactory);
reader.loadBeanDefinitions(new ClassPathResource("user.properties"));
2.1.2 面向注解的配置
现代Spring应用更推荐使用注解方式:
@Component及其衍生注解(@Service,@Repository,@Controller)@Bean用于配置类中的方法级别声明@Import用于快速导入其他配置类
2.1.3 面向API的编程式配置
对于需要动态注册Bean的场景,可以直接使用API:
java复制// 命名方式注册
BeanDefinitionBuilder builder = BeanDefinitionBuilder
.genericBeanDefinition(User.class)
.addPropertyValue("name", "李四")
.addPropertyValue("
