一、生命周期过程
![在这里插入图片描述](https://img-blog.csdnimg.cn/953ab4586c99491fb93bfeba1757e41e.png)
二、用途
在创建Bean过程中完成一些额外操作,比如加属性、方法、方法的调用等等。
至于加的位置取决自己的业务需求。
实现方式也可以有多种:
1、注解。
2、实现生命周期中的接口重写原有方法。
3、在生命周期完成前可以采用static静态代码块,会在类加载的时候自动执行。
4、在生命周期完成后,可以实现Spring容器启动完成后执行的两个接口,分别为CommandLineRunner和ApplicationRunner。
只要实现接口中的run方法,前者参数是String数组,后者是ApplicationArguments。多个类同时实现时,使用@Order定义执行顺序。
注:使用时注意执行顺序;static>construct>@PostConstruct>CommandLineRunner\ApplicationRunner>@PreDestory>destory方法
三、使用时注意操作不可违背生命周期过程
亲身经历那就是血的教训:
1、复制改造其他项目代码做组件时,注意检查是否有违周期的方法,如在Bean对象未完成实例化时调用它的任何构造函数,说人话即交给容器管理的对象类里,千万不要有调用Bean对象的构造方法的地方,好好查看一下!!!! 不然,空指针会等着你的,找不到类想想就头秃
2、 注意构造Bean对象是先属性后实例化,简单点记,没有属性=没有具体内容(别人告诉你,有个需求要你做,但是就是不告诉你需求是个啥玩意儿,你能干活?)