Spring目的
让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的
(Spring根据这些配置 内部通过反射去动态的组装对象)
*.Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。
Spring工作原理
Spring框架的核心组件是Spring IoC容器(BeanFacory接口或者ApplicationContext接口)和Spring配置文件(或者注解配置信息)。
Spring的基本思想是:把对象之间的依赖关系转移到配置文件(或者注解配置)中,由工厂类(BeanFacory接口)来创建对象。
由容器动态地创建并注入对象,决定所配置对象的创建、管理和销毁。
程序执行过程:
(1)根据业务要求创建实体类或给出接口的实现;
(2)利用所创建的类,在配置文件中配置Bean信息;
(3)创建Spring容器(该容器与配置文件相关联——读取配置信息)
(4)从容器中获取实例对象,由对象调用方法完成所需要的业务处理。
Spring容器和被管理的bean
Spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是
BeanFactory的子接口。他们都可以代表Spring容器。
Spring容器是生成Bean实例的工厂,并管理Spring中的bean。包括数据源、Hibernate的SessionFactory、事务管理器。
①Spring最基本的接口就是BeanFactory
BeanFactory有很多实现类,通常使用XmlBeanFactory,推荐使用ApplictionContext,它是
BeanFactory的子接口,
ApplictionContext的实现类为
FileSystemXmlApplicationContext 和ClassPathXmlApplicationContext
FileSystemXmlApplicationContext:基于文件系统的XML配置文件创建ApplicationContext;
ClassPathXmlApplicationContext:基于类加载路径下的xml配置文件创建ApplicationContext。
②ApplicationContext的事件机制
ApplicationContext事件机制是基于观察者设计模式实现的。
通过ApplicationEvent类和ApplicationListener接口,
ApplicationEvent:容器事件,必须由ApplicationContext发布;
ApplicationListener:监听器,可有容器内的任何监听器Bean担任。
③容器中bean的作用域
singleton:单例模式,在整个Spring IoC容器中,singleton作用域的Bean将只生成一个实例。
prototype:每次通过容器的getBean()方法获取prototype作用域的Bean时,都将产生一个新的Bean实例。
request:对于一次HTTP请求,request作用域的Bean将只生成一个实例,这意味着,在同一次HTTP请求内,程序每次请求该Bean,得到的总是同一个实例。只有在Web应用中使用Spring时,该作用域才真正有效。
对于一次HTTP会话,session作用域的Bean将只生成一个实例,这意味着,在同一次HTTP会话内,程序每次请求该Bean,得到的总是同一个实例。只有在Web应用中使用Spring时,该作用域才真正有效。
global session:每个全局的HTTP Session对应一个Bean实例。在典型的情况下,仅在使用portlet context的时候有效,同样只在Web应用中有效。
注意:request和sessio