JAVA_WEB Spring框架学习 第一章 使用容器管理Bean对象及属性注入
1.1.1 Spring 的概述:
1.2.1.1 什么是 Spring :
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作 Expert One-On-One J2EE Development and Design 中阐述的部分理念和原型衍生而来。它是 为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使 用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情。然而,Spring 的用途不仅限于服务器端的开发。从简单性、 可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring 中受益。Spring 的核心是控制反转 (IoC)和面向切面(AOP)。简单来说,Spring 是一个分层的 JavaSE/EEfull-stack(一站式) 轻量级 开源框架。
EE 开发分成三层结构:
* WEB 层:Spring MVC.
* 业务层:Bean 管理:(IOC)
* 持久层:Spring 的 JDBC 模板.ORM 模板用于整合其他的持久层框架.
Expert One-to-One J2EE Design and Development :J2EE 的设计和开发:(2002.EJB)
Expert One-to-One J2EE Development without EJB :J2EE 不使用 EJB 的开发.
三层框架中Spring的位置
1.2.1.2 为什么学习 Spring:
方便解耦,简化开发
Spring 就是一个大工厂,可以将所有对象创建和依赖关系维护,交给 Spring 管理 AOP 编程的支持
Spring 提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能 声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无需手动编程 方便程序的测试
Spring 对 Junit4 支持,可以通过注解方便的测试 Spring 程序 方便集成各种优秀框架
Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、 MyBatis、Quartz 等)的直接支持降低 JavaEE API 的使用难度
Spring 对 JavaEE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等),都提供了封装, 使这些 API 应用难度大大降低
Spring一站式框架
①:spring框架性质是容器性质的
②:容器中装什么对象就有什么功能,所以可以一站式
③:不仅不排斥其他框架,还能帮其他框架管理对象
④:aop支持
⑤:ioc思想
⑥:spring jdbc
⑦:aop事物
⑧:junit 测试支持
1.2.1.3 Spring 的版本:
Spring 3.X 和 Spring4.X
1.2.1.4 Spring的模块化划分
开发步骤(针对bean管理的案例,只导入以下的包):
一:引入Spring的开发包
com.springsource.org.apache.log4j-1.2.15.jar(可选)老版本的需要用到这个包
二:创建一个对象
三:书写配置注册对象到容器
位置任意(建议放到src下)
配置文件名任意(建议applicationContext.xml)
导入约束:
选择EditName....选项 如下:
四:代码测试
1.2.1.5 Spring概念
Ioc思想:
di思想:
applicationContext 与 BeanFactory 介绍
BeanFactory接口:
①: spring原始接口.针对原始接口的实现类功能较为单一
②:BeanFactory接口实现类的容器.特点是每次在获得对象时才会创建对象.
ApplicationContext:
①:每次容器启动时就会创建容器中配置的所有对象.并提供更多功能
②:丛类路径下加载配置文件:ClassPathXmlApplicationContext
③:从硬盘绝对路径下加载配置文件:FileSystemXmlApplicationContext("d:/xxx/yyy/xxx")
结论 : web开发中,使用applicationContext. 在资源匮乏的环境可以使用BeanFactory.
1.2.1.6 Spring配置详解
一:Bean元素
二:Bean元素进阶
scope属性:
①:singleton(默认值):单例对象.被标识为单例的对象在spring容器中只会存在一个实例
②:prototype:多例原型.被标识为多例的对象,每次再获得才会创建.每次创建都是新的对象.整合struts2时,ActionBean必须配置为多例的.
③:request:web环境下.对象与request生命周期一致.
④:session:web环境下,对象与session生命周期一致.
三:生命周期属性
①:配置一个方法作为生命周期初始化方法.spring会在对象创建之后立即调用.(init-method)
②:配置一个方法作为生命周期的销毁方法.spring容器在关闭并销毁所有容器中的对象之前调用.(destory-method)
四:Spring创建对象的方式
①:空参构造方式
②:静态工厂(了解)
③:示例工厂(了解)
五:spring的分模块配置
1.2.1.6 Spring属性注入
注入方式: set方法注入、构造函数注入、P名称空间注入、spel注入
①:set方法注入
② :构造函数注入
③:P名称空间注入
④:spel注入
复杂类型注入
①:数组
②:List
③:Map
④:Properties