没有合适的资源?快使用搜索试试~ 我知道了~
Spring实例化bean过程解析及完整代码示例
4 下载量 198 浏览量
2020-08-28
07:27:36
上传
评论
收藏 65KB PDF 举报
温馨提示
试读
3页
主要介绍了Spring实例化bean过程解析及完整代码示例,简单分析实例化bean过程并且分享了相关实例,具有一定借鉴价值,需要的朋友可以参考下
资源详情
资源评论
Spring实例化实例化bean过程解析及完整代码示例过程解析及完整代码示例
主要介绍了Spring实例化bean过程解析及完整代码示例,简单分析实例化bean过程并且分享了相关实例,具有一定借鉴价值,需要的朋
友可以参考下
提出问题提出问题
Spring中Bean的实例化是Bean生命周期的一个重要环节,通常Bean初始化后将不再改变。
那么Spring实例Bean的过程到底是怎么样的呢?!
Spring实例化实例化bean过程分析过程分析
要想获取到一个bean对象,得先通过BeanFactory的getBean()方法获取,期间会经过一系列步骤来实例化这个bean对象:
第一步:调用Bean的默认构造方法(当然也可以是指定的其它构造方法),生成bean实例:bean1。
第二步:检查Bean配置文件中是否注入了Bean的属性值,如果有注入,则在bean1实例的基础上对其属性进行注入,把原来的bean1给覆盖掉形成新的
bean实例:bean2。
第三步:检查Bean是否实现了InitializingBean接口,如果实现了此接口,则调用afterPropertiesSet()方法对bean2进行相应操作后,把bean2覆盖形成
新的bean实例:bean3。
第四步:检查Bean配置文件中是否指定了init-method此属性,如果已指定,则调用此属性对应方法并对bean3进行相应操作后,最终把bean3覆盖形成
新的实例:bean4。
通过上面的步骤我们发现,Spring实例一个bean时,这个bean是在不断的变化的!
Spring实例化实例化bean过程代码演示过程代码演示
为了更好的说明以上步骤,请看下面代码:
实体类:
/**
* 实体类
*/
public class Employee implements InitializingBean, DisposableBean, BeanNameAware {
private String id;
// 员工编号
private String name;
// 员工姓名
private String sex;
// 员工性别
private String age;
// 员工年龄
private String nativePlace;
// 员工籍贯
private String department;
// 员工部门
private String beanName;
// bean的名称
public Employee() {
System.out.println("**********第一步:调用Bean的默认构造方法**********");
this.id = "bean1:G080405214";
System.out.println("bean1的 值:" + this);
System.out.println("**********第二步:检查Bean配置文件中是否注入了Bean的属性值**********");
}
public void afterPropertiesSet() throws Exception {
System.out.println("bean2的值:" + this);
System.out.println("**********第三步:检查Bean是否实现了InitializingBean接口**********");
this.name = "bean3:李晓红";
this.sex = "bean3:女";
this.age = "bean3:25";
System.out.println("bean3的值:" + this);
}
public void init() {
System.out
.println("**********第四步:检查Bean配置文件中是否指定了init-method此属性**********");
this.nativePlace = "bean3:北京";
System.out.println("bean4的值:" + this);
}
public void destroy() throws Exception {
System.out.println("**********服务停止**********");
}
public void setBeanName(String arg0) {
System.out.println("**********设置bean的名称**********");
this.beanName = "myBeanName";
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0
最新资源