一、生命周期
-
什么是生命周期
何谓生命周期,举个例子,一个人一天的生活就是这个人一天内的生命周期。从起床->洗漱,吃饭->上班->下班->睡觉。所以生命周期就是在一段时间内所发生的事情。
-
生命周期中的变化
除了上面定义的事情,还有些事情是未知(变化的),像起床和吃饭之间,吃饭和上班之间会发生什么,未可知。可能你妈会在你吃饭之前,让你先把手洗干净。可能在你上班之前,你的朋友克隆了一个你代替你上班。用代码来表示如下
/**
* 可以影响你的人
*/
public interface IProcessNi {
void beforeChifan(Ni ni);
Ni beforeShangban(Ni ni);
}
/***
* 你
*/
public class Ni {
public void chifan() {
};
public void shangban() {
};
public void xishou() {
System.out.println("手已干净");
}
/***
* 你的妈妈
*/
public static class Mama implements IProcessNi {
@Override
public void beforeChifan(Ni ni) {
ni.xishou();
}
@Override
public Ni beforeShangban(Ni ni) {
return ni;
}
}
/***
* 你的朋友
*/
public static class Pengyou implements IProcessNi {
@Override
public void beforeChifan(Ni ni) {
ni.xishou();
}
@Override
public Ni beforeShangban(Ni ni) {
return new Ni();
}
}
//你的一天
public static void main(String[] args) {
List<IProcessNi> list = Lists.newArrayList(new Mama(), new Pengyou());
Ni ni = new Ni();
for (IProcessNi proc : list) {
proc.beforeChifan(ni);
}
ni.chifan();
for (IProcessNi proc : list) {
Ni newNi = proc.beforeShangban(ni);
if (newNi != null) {
// 一个新的你
ni = newNi;
break;
}
}
ni.shangban();
}
}
二、spring bean的生命周期
-
bean的生命周期
-
影响bean的接口
- org.springframework.beans.factory.config.InstantiationAwareBeanPostProc
essor 影响bean的实例化,像aop,依赖注入等在此实现 - org.springframework.beans.factory.config.BeanPostProcessor 影响bean的初始化,像事务,shiro过滤器加载等在此实现
- org.springframework.beans.factory.config.InstantiationAwareBeanPostProc