Spring容器简介
Spring容器负责创建Bean实例,并管理其生命周期,负责管理Bean与Bean之间的依赖关系.任何的Java类、接口都被当成Bean处理
Spring相关概念:
(1)IOC(控制反转):应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器实现的。
(2)DI(依赖注入):在运行期,由外部容器动态地将依赖对象注入到组件中。
所谓依赖注入,是指程序运行过程中,如果需要另一个对象协作
(调用它的方法、访问它的属性)时,无须在代码中创建被调用
者,而是依赖于Spring容器的注入
(3)AOP(面向切面编程):通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能
Spring的IOC容器的关键点
(1)必须将被管理的对象定义到Spring配置文件中。
(2)必须定义构造函数或setter方法,让Spring将对象注入进来。
(3)Spring默认的scope配置为singleton(单例模式),默认在容器启动时
就对bean进行实例化,可配置lazy-init=”true”,则获取Bean时才会初始化。
如果改为prototype,则每次会创建一个新实例,可避免线程安全问题。
(4)Spring的自动装配有二种:
一种是根据名称自动装配,例setXXX(),XXX需与Spring中配置的ID一致,
在头部文件中定义default-autowire=”byName”,
另一种是根据类型自动装配,Spring中配置的Id可随意定义,可不与setXXX()中的XXX一致,
会自动查找相应的Class类型,在头部文件中定义default-autowire=”byType”
Spring MVC请求处理流程图
核心控制器会根据不同的业务请求调用不同的业务控制器
如果需要为Bean设置的属性值是容器中的另一个Bean实例,如何设置
为<bean…/>元素的子元素<property…/>增加ref属性来成,ref属性值为另一个Bean实例
Spring整合Struts2时,创建Spring容器的方式
直接在web.xml文件中配置ContextLoaderListener监听器类
创建Spring容器.ContextLoaderListener加载时,会查找名为
contextConfigLocation的初始化参数,配置
<context-param.../>时应指定参数名为
contextConfigLocation,参数值为多个配置文件,多个配置
文件之间以“,”隔开;如果没有contextConfigLocation
初始化参数,ContextLoaderListener会自动查找WEB-INF下的
applicationContext.xml文件
Struts 2整合Spring的插件
进入Struts 2框架解压缩文件的lib目录下,可以找到一个
struts2-spring-plugin-2.2.1.jar文件,这个JAR包就是Struts 2整合Spring的插件
Spring整合Struts2时,struts.xml文件中配置Action
的<action.../>元素的class属性值如何指定
在struts.xml文件中配置该Action时,class属性是Spring容器中Action实例的ID