spring 工作原理

spring 两大核心

1.ioc 控制反转

概念: 控制权由对下本身转向容器,由容器根据配置文件去创建实例并创建各个实例之间的              依赖关系。

核心:bean工厂在spring中,bean工厂创建各个实例

2. AOP 面向切面编程

        代理的两种方式

          静态代理: 针对每个具体类分别编写代理类。

                          针对一个接口编写一个代理类

          动态代理:针对一个方面编写一个invocationHandler然后借用JDK反射包中的proxy类为接口动态生成相应的代理类

spring 的一切都是反射, 反射比直接调用处理速度慢,

spring的注入方式 有以下三种

setter 对于习惯了传统 javabean 开发的程序员,通过 setter 方法设定依赖关系更加直观。

如果依赖关系较为复杂,那么构造子注入模式的构造函数也会相当庞大,而此时设值注入模式则更为简洁。

如果用到了第三方类库,可能要求我们的组件提供一个默认的构造函数,此时构造子注入模式也不适用。

inteface接口注入模式因为历史较为悠久,在很多容器中都已经得到应用。但由于其在灵活性、易用性上不如其他两种注入模式,因而在IOC的专题世界内并不被看好。

constructor在构造期间完成一个完整的、合法的对象。

所有依赖关系在构造函数中集中呈现。

依赖关系在构造时由容器一次性设定,组件被创建之后一直处于相对“不变”的稳定状态。

只有组件的创建者关心其内部依赖关系,对调用者而言,该依赖关系处于“黑盒”之中。


spring的核心接口及核心配置文件

1.BeanFactory最基础最核心的接口

重要的实现类有:

XmlBeanFactory,以及ApplicationContext接口下的类

2.Resource接口,可以通用地访问文件资源

1)ClassPathResource:读取得形式为"classpath:ApplicationContext.xml"

2)FileStstemResource:读取得形式为"file:c:\spring\src\ApplicationContext.xml"

3)ServletContextResource:读取得形式为"WEB-INF\ApplicationContext.xml"

//ResourceLoader类用于载入Resource

3.FactoryBean工厂bean

它本身在bean factory中定义,同时又是用于创建目标bean的工厂

spring有以下实现:

1)JndiObjectFactoryBean:通过JNDI查找获取对象

2)LocalSessionFactoryBean:用于在本地装配Hibernate SessionFactory

3)LocalSessionFactoryBean:用于在本地装配JDO PersistenceManagerFactory

4)ProxyFactoryBean:用于获取AOP的代理

5)TransactionProxyFactoryBean:用于为对象创建事务代理,用于实现简捷易用的声明性事务代理

6)RmiProxyFactoryBean:为通过RMI访问的远程对象创建一个代理

4.ApplicationContext加强了BeanFactory的功能,支持以下功能

1)国际化支持

2)资源访问

3)事件监听机制

它的重要的实现类有:

FileSystemXmlApplicationContext,ClassPathXmlApplication,XmlWebApplicationContext

5.Bean生命周期的回调接口

BeanFactoryPostProcessor,InitializingBean,DisposableBean,BeanFactoryAware,ApplicationContextAware,ResourceLoader,BeanPostProcessor

6.MessageSource接口

它的实现类有ResourceBundleMessageSource,ReloadableResourceBundleMessageSource.后者在属性文件修改后会重新载入

你可能感兴趣的:(spring 工作原理)