第一讲 Spring基本用法
一、spring入门
1、设值注入
- IOC容器通过成员变量的setter方法来注入依赖的对象。
- 在依赖的对象中要有setter方法。
Xml中配置:
- 如果A依赖于对象B,B的配置:
<bean id=”B” class=”cc.wsyw126.service.imp.B”/>
A的配置:
<bean id=”A” class=”cc.wsyw126.service.imp.A”/> <property name=”变量名” ref=”B”/> </bean>
- Id:指定该Bean的唯一标示
- class:指定该Bean的实现类,此处不可用接口类,必须用实现类。
- 如果A依赖于对象B,B的配置:
2、构造器注入
- 在构造实例时,完成依赖关系的初始化。
- 要有参数为依赖对象B的构造器。
XML配置:
A的配置:
<bean id=”A” class=”cc.wsyw126.service.imp.A”/> <constructor-arg ref=”B”/> </bean>
- B的配置同设值注入
二、Spring容器
- spring容器最基本的接口时BeanFactory,它有一个子接口ApplicationContext。
- ApplicationContext的实现类有:FIleSystemXmlApplicationContext,ClassPathXmlApplicationContext,AnnotationConfigApplicationContext。在web应用中经常使用xml和annotation这两个ApplicationContext。
使用BeanFactory创建BeanFactory的实例。
搜索类加载器路径下的beans.xml文件创建Resource对象
Resource isr = new ClassPathResource(“beans.xml”);
搜索文件系统的当前路径下的beans.xml文件创建Resource对象
Resource isr = new FileSystemResource(“beans.xml”);
a和b任选其一,后跟下面的代码
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(beanFactory).loadBeanDefinitions(isr);
- 如果有多个配置文件,那么使用ApplicationContext创建BeanFactory的实例。
ApplicationContext appcontext = new ClassPathXmlApplicationContext(“beans.xml”,”service.xml”);
ApplicationContext appcontext = new FIleSystemXmlApplicationContext(“beans.xml”,”service.xml”);
- 类加载器目录:指的就是src目录。
三、让Bean获取它所在的Spring容器
- 可以让它实现BeanFactoryAware接口,在该接口中有一个方法:
setBeanFactory(BeanFactory beanFactory)
,这个参数指向创建它的BeanFactory。 - 实现ApplicationContextAware接口,在该接口中有一个方法:
setApplicationContext(ApplicationContext ctx)
,这个参数指向创建它的BeanFactory。 - 在国际化的时候,需要用ctx,所以这时候就需要获得ctx,就用这种方法。
四、Spring容器中的bean
- Bean的定义
- default-lazy-init:指定该
五、使用自动装配注入合作者的bean
- Spring的自动装配可以通过
六、spring配置数据源
- 有三种方式(dbcp,c3p0,jndi)
七、抽象bean和子bean
- 把多个< bean…/>配置中相同的信息提取出来,集中成模板,需要为该bean添加属性:abstract=”true”。
- 通过为子bean指定parent属性就可以指定该bean是一个子bean,parent属性指定该bean所继承的父bean的id。
八、强制初始化bean
- 指定属性depends-on=””
九、容器中bean的声明周期
- 依赖关系注入之后的行为:
- 使用init-method属性。配置xml中指定init-method,在类中添加方法init()。
- 实现InitializingBean接口。实现方法:afterPropertiesSet()。
- Bean销毁之前的行为:
- 使用destroy-method属性。配置init-method,在类中添加方法close()。。
- 实现DisposableBean接口。实现方法:destroy()。
- 创建实例->注入依赖关系->调用afterPropertiesSet->调用init-method方法->对外提供服务->调用destroy->调用destroy-method方法。
参考资料:
轻量级java ee企业应用实战(第4版)
备注:
转载请注明出处:http://blog.youkuaiyun.com/wsyw126/article/details/51744210
作者:WSYW126