Spring的配置、生命周期、依赖注入bean的操作

使用Spring需要的jar

http://www.springsource.org/download下载spring,然后进行解压缩,在解压目录中找到下面jar文件,拷贝到类路径下

dist\spring.jar

lib\jakarta-commons\commons-logging.jar

如果使用了切面编程(AOP),还需要下列jar文件

lib/aspectj/aspectjweaver.jaraspectjrt.jar

lib/cglib/cglib-nodep-2.1_3.jar

如果使用了JSR-250中的注解,@Resource/@PostConstruct/@PreDestroy,还需要下列jar文件

lib\j2ee\common-annotations.jar

spring的配置文件模版

<?xml version="1.0"encoding="UTF-8"?>

<beansxmlns="http://www.springframework.org/schema/beans"

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

      xsi:schemaLocation="http://www.springframework.org/schema/beans

          http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

         .....

</beans>

该配置模版可以从spring的参考手册或spring的例子中得到。配置文件的取名可以任意,文件可以存放在任何目录下,但考虑到通用性,一般放在类路径下。

编写spring配置文件时,不能出现帮助信息

由于springschema文件位于网络上,如果机器不能连接到网络,那么在编写配置信息时候就无法出现提示信息,解决方法有两种:

1。让机器上网,eclipse会自动从网络上下载schema文件并缓存在硬盘上。

2。手动添加schema文件,方法如下:

windwos->preferences->myeclipse->filesand editors->xml->xmlcatalog

"add",在出现的窗口中的Key Type中选择URI,location中选"File system",然后在spring解压目录的dist/resources目录中选择spring-beans-2.5.xsd,回到设置窗口的时候不要急着关闭窗口,应把窗口中的Key Type改为Schema location,Key改为http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

二、装配Bean

l  2.1 容纳你的bean

    2.1.2 使用应用上下文()

ApplicationContext context =

  newFileSystemXmlApplicationContext("

 c:\foo.xml");

ApplicationContext context =

  newClassPathXmlApplicationContext("

 foo.xml");

l  2.1 容纳你的bean

    2.1.1 bean工厂介绍

工厂设计模式,创建分发各种bean。配置好它们之

间的写作关系,参与bean的生命周期。

BeanFactory factory = new XmlBeanFactory(

newFileInputStream("beans.xml"));

bean工厂只把bean的定义信息载进来,用到的时候

才实例化。

factory.getBean("mybean");就可得到一个

bean

l  2.1 容纳你的bean

    2.1.2 使用应用上下文

ApplicationCotext,spring更加高级的容器。功能

强大:

1.提供文本信息解析工具,包括对国际化支持。

2.提供载入文件资源的通用方法,如图片。

3.可以向注册为监听器的bean发送事件。

在很少的情况下,使用BeanFactory,如在移动设

备。

l  2.1 容纳你的bean

    2.1.2 使用应用上下文()

三种经常用到的实现:

1.ClassPathXmlApplicationContext:从类路径中加载。

2.FileSystemXmlApplicationContext:从文件系统加载。

3.XmlWebApplicationContext:web系统中加载。

l  2.1 容纳你的bean

    2.1.2 使用应用上下文()

ApplicationContext context =

  newFileSystemXmlApplicationContext("

 c:\foo.xml");

ApplicationContext context =

  newClassPathXmlApplicationContext("

 foo.xml");

l  2.1 容纳你的bean

    2.1.2 使用应用上下文()

除了应用上下文提供的附加功能外,应用上下文

bean工厂的另一个重要区别是关于单例bean

如何被加载。

bean工厂延迟加载所有bean,直到getBean()

方法被调用。

应用上下文会在启动后预载入所有单例bean.这样可确

保应用不需要等待他们被创建。

l  2.1 容纳你的bean

    2.1.3 bean的生命周期

bean被载入到容器中时,他的生命周期就开始

了。bean工厂在一个bean可以使用前完成很多

工作:

1.容器寻找bean的定义信息并实例化。

2.使用依赖注入,springbean定义信息配置bean的所有属性。

3.bean实现了BeanNameAware接口,工厂调用BeansetBeanName

  ()方法传递beanID

4.bean实现了BeanFactoryAware接口,工厂调用setBeanFactory()

   方法传入工厂自身。

5.BeanPostProcessorbean关联,则它们的

  postProcessBeforeInitialization()方法被调用。

6.bean指定了ini-method方法、,它将被调用。

7.最后,若有BeanPostProcessorbean关联,则它们的

  postProcessAfterInitialization()方法被调用、。

l  2.1 容纳你的bean

    2.1.3 bean的生命周期()

bean从工厂中删掉有两种方法:

1.bean实现了DisposableBean接口,

  distroy()方法被调用。

2.如果指定了定制的销毁方法,就调用这个方法。

bean在应用上下文中的生命周期和在bean工厂

的生命周期唯一不同的是:若bean实现了

ApplicationContextAware()接口,

setApplicationContext()方法会被调用。

 

 

BeanSpring工厂中的生命周期

 

 

 

 

BeanSpring Bean应用上下文中的生命周期

 

 

l  2.2 基本装配

   spring容器内拼凑bean叫做装配。装

   bean的时候,需要告诉容器哪些bean

   以及容器如何使用依赖注入将它们配合在

   一起。

l  2.2 基本装配

    2.2.1 使用XML装配

  xml是最常见的spring应用系统配置源。

   几种spring容器都支持使用xml装配bean,包括:

  1.XmlBeanFactory:调用InputStream载入上下文

      定义文件。

  2.ClassPathXmlApplicationContext:从类路径载

     入上下文定义文件。

  3.XmlWenApplicationContext:web应用上下文

     中载入定义文件。

l  2.2 基本装配

    2.2.1 使用XML装配()

上下文定义文件的根元素是<beans>.<beans>有多

<bean>子元素。每个<bean>元素定义了一个

bean如何被装配到spring容器中。

<beans>

      <bean id="foo" class="...Foo"/>

      <bean id="bar" class="...Bar"/>

</beans>

l  2.2 基本装配

    2.2.2 添加一个bean

bean的最基本的配置包括beanID和他的

全称类名。

<bean id="foo"class="...Foo"/>

beanidfoo

l  2.2 基本装配-scope

prototypesingletonrequestsessionglobal-session

spring中的bean缺省情况下是单例模式。始终返回一个实

例。若想返回不同的实例的话需要定义成原型模式。

beansingleton属性告诉上下文该bean是否为单例的。缺

省为true。若为false的话,为原型bean

<bean id="foo"class="...Foo" singleton="false"/>

<!– spring2.5 -->

<beanscope="prototype|single|..">

l  2.2 基本装配

    2.2.2 添加一个bean()

  使用原型bean会对性能产生影响,尽量不要把singleton设置为false,除非有必要。

l  2.2 基本装配

    2.2.2 添加一个bean()

  实例化与销毁

 spring实例化bean或销毁bean时,有时需要作一些处理工作,因此spring可以在创建和拆卸bean的时候调用bean的两个生命周期方法。

 <bean class="Foo" init-method destory-method>

 <!-- spring2.5-->

 @PostConstruct public void ini(){…}

 @PreDestroy public void destroy(){…}

 <bean

         class="...CommonAnnotationBeanPostProcessor">

l  2.2 基本装配

    2.2.2 添加一个bean()

      spring也提供了两个接口来实现相同的功能:

      InitializingBeanDisposableBean.

      InitializingBean接口提供了一个afterPropertiesSet()方法。

      DisposableBean接口提供了destroy().

      不推荐使用该接口,它将你的beanspringAPI邦定在一起。

l  2.2 基本装配

    2.2.3 通过set方法注入依赖

 <bean>元素的< property >子元素指明了使用它们的set方法来注入。可以注入任何东西,从基本类型到集合类,甚至是应用系统的bean

l  2.2 基本装配

    2.2.3 通过set方法注入依赖()

  简单bean配置

  配置bean的简单属性,基本数据类型和string

 <bean id="foo" class="...Foo">

       <property name="name">

              <value>tom</value>

       </property> 

 </bean>

l  2.2 基本装配

    2.2.3 通过set方法注入依赖()

 引用其它bean

 <bean id="foo"class="...Foo">

       <property name="name">

              <ref bean="bar">

        </property> 

 </bean>

 <bean id="bar"class="...Bar">

 </bean>

l  2.2 基本装配

    2.2.3 通过set方法注入依赖()

  内部bean

 <bean id="foo" class="...Foo">

       <property name="bar">

              <beanclass="...Bar">

       </property> 

 </bean>

这种方式的缺点是你无法在其它地方重用这个bar

例,原因是它是专门为foo而用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值