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.后者在属性文件修改后会重新载入