之前在网上看过Spring源码,但是对于我来说,即使有流程图例子,即使看过Spring秘籍,源码对我来说还是一头雾水.在github上找了个小项目-spring,个人觉得结合源码看还是很不错的。BeanFactory和BeanDefinition是IOC中最重要的两个角色,Spring从如何处理对象之间的依赖关系的角度来揭示Spring框架。事实上,无论你从哪个角度去观察或深入这个框架,你都会发现职责分离的威力需要从这一步开始仔细体会。如果没有UML图,你很快就会忘记方法是按照功能放在不同的地方的,这样理解起来可能会更清楚。从源码可以看出,抽象类不仅承担了一部分真正的功能实现,而且是抽象层次分离的重要一步。如果定义了defined构造方法,那么在创建类的实例对象时必须调用构造方法。由于容器在创建instance实例对象时使用了动态代理,自然有两种选择。JDK动态代理cglib字节码这里使用的是strategy模式。它是如何体现的?一般来说,需要有一个策略接口,然后由不同的类来实现不同的策略。同时,策略的holder,也就是应用上下文https://www.liaoxuefeng.com/w...这个链接中的create(Stringname,BeanDefinition)方法更合理持有策略接口,默认是进一步完善字节码代理——创建Bean实例时带构造参数进一步完善——创建Bean实例时,参数的属性填充Resource和ResourceLoader介入容器启动机制(Processor)和应用上下文(Context)Bean实例的初始化方法和销毁方法归纳容器(Aware)单例模式/原型模式和FactoryBean监听器(容器关闭和刷新???)Spring容器在Spring中的应用第一个场景侦听器关联的是容器的刷新和关闭。监听器其实是观察者设计模式最常见的应用。我们知道Spring的职责分离的设计导致UML图复杂(有点吐槽,脑子里真的记不起来了,可能我用的不多),应该记得吧,不然面试的时候project不行,技术学习不够底层,跟其他面试官聊什么,怎么赚小钱毕竟Event,Listener,Multicaster,Publisher这四个重要Spring监听器的一部分,而EventObject是jdk中提供的一个接口。event的翻译是event,但是我觉得理解为notification更合理。廖雪峰老师在讲观察者模式时举了一个例子。理解后转载如下//A关注商品是否涨价classListenerAimplementsListener{//不写onEvent(evnete)的目的是展示演化过程publicvoidonPublish(productproduct){//StringnameSystem.out.printf(name+"涨价了");}}//B想卖涨价后的商品类ListenerB实现Listener{publicvoidonPublish(Productproduct){//StringpriceSystem.out.printf("Sellatthepriceof"+price+"");}}//Observer,这里使用ObserverablepublicclassObserverable{privateStringname;私有字符串价格;privateSet
