bean初始化依赖于构造器,何为构造器?
构造器:一个特殊的方法,用于创建实例时执行初始化(各种框架以及设计模式都依赖构造器)
作用:被其他方法调用,给对象初始化赋值。基本数据类型(默认值为0),布尔(默认为false),引用(默认为null),然后返回该类的实例
注意:如果程序员没有为Java类提供任何构造器,则系统会为这个类提供一个无参数的构造器,这个构造器的执行体为空,不做任何事情。
无论如何,Java类至少包含一个构造器。构造器通常设置为public访问权限,允许系统中任何位置的类来创建该类的对象(极端情况例外)。
bean初始化和销毁,常见的有如下4种:
1.xml配置文件
2.@bean注解
3.实现InitializingBean和DisposableBean接口
4.@PostConstruct&@PreDestroy注解
bean创建--初始化---销毁的过程如下:
调用构造器(创建对象)
单实例:在容器启动的时候创建对象
多实例:在每次获取的时候创建对象
初始化:
对象创建完成,并赋值好,调用初始化方法
销毁:
单实例:容器关闭的时候
多实例:容器不会管理这个bean,容器不会调用销毁方法
第一种方式,xml文件里bean标签里配置 init-method和destroy-method
第二种方式,使用@bean注解,指定initMethod = "init", destroyMethod = "destroy" 方法
@Bean(initMethod = "init", destroyMethod = "destroy",name = "fuTu")
public FuTu getFuTu() {
return new FuTu();
}
public class FuTu {
public FuTu() {
System.out.println("富途牛牛-无参构造创建中-----");
}
public void init() {
System.out.println("富途牛牛-init-----");
}
public void destroy() {
System.out.println("富途牛牛-destroy-----");
}
}
第三种,实现InitializingBean和DisposableBean接口
public class HuaTai implements DisposableBean, InitializingBean {
public HuaTai() {
System.out.println("华泰-无参构造函数-------");
}
@Override
public void destroy() throws Exception {
System.out.println("华泰-destroy-----");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("华泰-afterPropertiesSet-----");
}
}
第四种,使用@PostConstruct&@PreDestroy注解
public class HuiLi {
public HuiLi() {
System.out.println("辉立--无参构造函数-----");
}
@PostConstruct
public void init() {
System.out.println("辉立--init-----");
}
@PreDestroy
public void destory() {
System.out.println("辉立--destory-----");
}
}
富途牛牛-无参构造创建中-----
富途牛牛-init-----
容器已经启动----------
富途牛牛-destroy-----
通过上面代码打印结果可知,容器管理bean的生命周期,依赖于构造器(创建对象),调用默认或者自定义初始化和销毁方法。