Spring框架的核心有三个:Bean、Core和Context。
其实可以说Spring是面向Bean编程,Bean是Spring的主角。Bean在Spring中的作用就像Object对OOP的意义一样,没有对象的概念就没有面向对象编程,没有Bean就没有Spring存在的意义。Spring框架流行的原因就是因为它解决了一个非常关键的问题----对象之间的依赖关系。它把对象之间的依赖关系转而用配置文件管理,也就是它的依赖注入机制。而这个注入关系在一个叫做IoC的容器中管理,而IoC容器中保存的就是被Bean包裹的对象。Spring正是通过把对象包装在Bean中从而达到管理这些对象以及做一些额外操作的目的。
Bean组件在Spring的org.springframework.beans包下。这个包的所有类主要解决了三件事:Bean的定义、Bean的创建和Bean的解析。Spring使用者只需要关心Bean的创建,其他两个由Spring在内部自动完成。Spring Bean是典型的工厂模式,它的顶级接口是BeanFactory。创建Bean的方式有两种:通过XML文件配置;通过注解的方式配置。
已经知道了Bean包装的是Object,而每个Object必然含有数据,如何给这些数据提供生存环境就是Context需要解决的问题。对Context来说它就是要发现每个Bean之间的关系,为他们建立起并维护好这个关系。所以Context就是一个Bean关系的集合,这个关系又叫IoC容器,一旦建立起这个IoC容器,Spring就可以工作了。
Context在Spring的org.springframework.context包下,ApplicationContext是Context的顶级父类。
Core组件作为Spring的核心组件,其中包含了很多的关键类,一个重要的组成部分就是定义了资源的访问方式。
要了解Spring的AOP要先了解动态代理的原理,因为AOP是基于动态代理实现的。
从代理的原理可得,代理的目的是调用目标方法时可以转而执行InvocationHandler类的invoke方法。所以如何在InvocationHandler上做文章就是Spring实现AOP的关键所在。