7. Spring可以借鉴的地方
使用模板模式,留下很多可以供子类扩展的地方,如各种postProcess();
将null取名,使程序更可读;
protected static final Object[] DO_NOT_PROXY = null;
protected Object[] getAdvicesAndAdvisorsForBean(
Class<?> beanClass, String beanName, @Nullable TargetSource targetSource) {
List<Advisor> advisors = findEligibleAdvisors(beanClass, beanName);
if (advisors.isEmpty()) {
return DO_NOT_PROXY;
}
return advisors.toArray();
}
- 巧妙利用反射和动态代理,维护bean的生命周期并实现aop等低耦合的模式;
- getBean(), doGetBean(), createBean(), doCreateBean()。在getBean()中完成一下初始化配置,还有后续处理,而在doGetBean()中真正利用反射获得Bean