Spring In Action(第三版)读书笔记
第一章 Spring之旅
POJO: plain old java object 简单的java对象
DI:Dependency Injection 依赖注入
构造器注入:构造时作为构造器参数传入
private Quest quest; public BraveKnight(Quest quest){ this.quest = quest; }
其中 Quest是个接口,用以在于实现松耦合。
测试的时候可以使用mock实现。如下:
Quest mockQuest = mock(Quest.class); BraveKnight knight = new BraveKnight(mockQuest);
装配wiring: 创建组件之间的协作行为.
XML配置装配
<bean id="quest" class="test.SlayDragonQuest"/> <bean id="knight" class="test.BraveKnight"> <constructor-arg ref="quest"/> </bean>
通过应用上下文(Application Context)装载Bean的定义
ApplicationContext context= new ClassPathXmlApplicationContext("knight.xml"); Knight knight = (Knight) context.getBean("knight");
AOP: Aspect-oriented Programming 应用切面编程--分离成可重用的组件.
Spring容器:Bean factories,最简单的容器
应用上下文:基于Bean factories之上,提供面向应用的服务。
ClassPathXmlApplicationContext——类路径下的xml文件
FileSystemXmlApplicationContext——绝对路径下的xml文件
XmlWebApplicationContext——web应用下的xml文件
Spring框架(分类比较杂,常见的有如下)
1. AOP模块
2. DAO模块(data access object)
ORM: object-relational mapping 对象关系映射
把关系型数据库中的关系数据映射成为程序中的对象。
3. web模块
4. spring mvc
*************************************************************************************
第二章 装配Bean
构造器注入
<bean id="duke" class="test.Duke"> <constructor-arg value="15"/><!-- 注意 如果注入另一个bean,需用 ref, not value--> </bean>
通过工程方法创建bean
-- 可以把没有公开构造函数的类配置为一个bean
<bean id="singleton" class="test.Singleton“ factory-method=”getInstance"/>
Bean的作用域
singleton (默认)在每个Spring IoC容器中一个bean定义对应一个对象实例。
prototype 一个bean定义对应多个对象实例。
request 在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例, 它们依据某个bean定义创建而成。该作用域仅在基于web的Spring
ApplicationContext
情形下有效。session 在一个HTTP
Session
中,一个bean定义对应一个实例。该作用域仅在基于web的SpringApplicationContext
情形下有效。global-session 在一个全局的HTTP
Session
中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。该作用域仅在基于web的SpringApplicationContext
情形下有效。