读书人

Spring 学习札记 (一)

发布时间: 2013-08-01 15:23:18 作者: rapoo

Spring 学习笔记 (一)

Spring 学习笔记 (一)

?

1. 使用版本 3.2.0的spring. 创建一个名称为TestSrping的普通web工程.

? ?将spring的libs文件夹中的jar拷贝到WEB-INF/lib下,注意javadoc和sourc的不需要

? ?

2. spring 3的版本中去掉了依赖包,所以需要额外找到commons-logging-1.1.1.jar拷贝到WEB-INF/lib下

?

? ?小试牛刀代码参考:test.spring包

?

3. Ioc控制反转,又叫依赖注入(Dependency Injection): 当某个Java实例(调用者)需要另一个Java实例(被调用者)

? ?时,在传统的程序设计过程中,通常有调用者来创建被调用者的实例.而在依赖注入的模式下,创建被调用者的工作不再

? ?由调用者来完成,因此称为控制反转;创建被调用者实例通常有SPring容器来完成,然后注入调用者,因此也称为依赖注入.

?

依赖注入有两种:

?设值注入: Ioc容器使用属性的setter方法来注入被依赖的实例

?构造注入: Ioc容器使用构造函器来注入被依赖的实例

?

?区别: 设置注入时,Spring先调用Bean的无参构造器,创建实例,然后调用setter方法,

? ? ? ?构造注入,Spring直接调用有参数的构造器

?

4. 设值注入:参考附件工程中的 test.ioc.setter包中代码

?

5. Sping 通过配置文件来配置依赖关系,参考工程中bean.xml

?

6. Spring 容器, 基本接口BeanFactory,子接口ApplicationContext

? ?通常ApplicationContext的实现类:

? ? ? FileSystemConfigApplicationContext,

? ? ? ClassPathXmlApplicationContext,

? ? ? AnnotationConfigApplicationContext

? ?Web应用中:

? ? ? XmlWebApplicationContext,

? ? ? AnnotationConfigWebApplicationContext

?

7. 国际化

? ?ApplicationContext接口 继承自MessageSource, ?

? ?MessageSource接口有下面三个方法:

? ?String getMessage(String code,Object[] args,Locale loc)

? ?String getMessage(String code,Object[] args,Sring default,Locale loc)

? ?String getMessage(MessageSourceResolvable resolvable,Locale loc)

? ?当程序创建 ApplicationContext时,会自动在配置文件中查找messageBean的配置,

? ?一旦找到,上述三个方法被委托给该messageBean,如果没有改Bean,ApplicationContext

? ?查找其父配置中的messageBean,如果还没有找到,则系统会自动创建一个空的StaticMessageBean

? ?的Bean,该Bean能接受上面三个方法的调用.

? ?在Spring中通常使用ResourceBundlMessageSource这个类

? ?

8. ApplicationContext的事件机制

? ?两个对象:

? ?(1) ApplicationEvent:容器事件,可以是自定义的事件(一个类必须继承自ApplicationEvent)

? ?(2) ApplicationListener:事件监听器,在Spring中配置了实现ApplicationListener接口的Bean

? ? ? ?Spring容器就会把这个Bean当成容器事件的监听器.

? ? ? ?当系统创建Spring,加载Spring容器是会自动触发容器事件,容器事件监听器可以监听容器事件,

? ? ? ?也可以监听自定义事件.程序中可以通过调用ApplicationContext的publishEvent来触发事件.

? ?内置事件:

? ?(1) ContextRefreshedEvent:ApplicationContext容器初始化或者刷新时触发该事件。

? ?(2) ContextStartedEvent:当使用ConfigurableApplicationContext接口的start()方法启动ApplicationContext容器时触发该事件。

? ?(3) ContextClosedEvent:当使用ConfigurableApplicationContext接口的close()方法关闭ApplicationContext容器时触发该事件。

? ?(4) ContextStopedEvent: 当使用ConfigurableApplicationContext接口的stop()方法停止ApplicationContext容器时触发该事件。

? ?(5) RequestHandledEvent: Web相关事件,只能应用于是用DispatcherServlet的Web应用.当Spring处理用户请求结束后触发.

? ?(包 test.springevent)

?

9. 在Spring的Bean中获得Spring容器(ApplicationContext的引用)

? ?bean需要实现ApplicationContextAware 接口,该接口包含一个setApplicationContext方法,传入ApplicationContext参数.

? ?这样容器在实例化bean时,会调用这个方法,并把容器本身作为参数传递给这个方法.

? ?(包 test.bean.get.appcontext)

?

附件工程文件中,需要导入spring 3.2.0 版本的lib里面的jar包

读书人网 >编程

热点推荐