Spring基础(13)——后处理Bean2

配置信息分离:

PropertyPlaceholderConfigurer是BeanFactoryPostProcessor的实现类,用于读取java properties文件中的属性,然后插入BeanFactory的定义中。

在应用上下文中从单个外部属性文件装载配置信息:

配置单个文件:

<bean id="configurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

    <property name="location" value="db.properties"/>

</bean>
配置多个文件
<bean id="configurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

    <property name="locations" >
      <list>
        <value>db.properties</value>
      <value>db.properties</value>
      <value>db.properties</value>
    </list>
</property>
</bean>

这样就可以用占位符变量代替bean配置文件中的硬编码配置了。占位符变量采用${variable}的形式。

事件处理:

Spring的ApplicationContext能够发布事件并且允许注册相应的事件监听器,他拥有一套完善的事件发布和监听机制。Spring事件处理也是通过扩展其定义的事件和事件监听器。

ApplicationEvent:容器事件,必须由ApplicationContext发布。继承EventObject,唯一构造方法ApplicationEvent(Object source)

ApplicationListener:监听器,可以是容器中的任何监听器Bean担任。

事件类:

ApplicationEvent的三个子类:

ContextRefreshedEvent:当容器初始化或刷新时产生该事件,调用容器的refresh方法时,产生该事件。

ContextClosedEvent:当容器关闭时,即调用容器的close方法时,产生该事件。

RequestHandleEvent:这是一个与Web应用相关的事件,当一个HTTP请求被处理后产生该事件。只有在web.xml中定义了DispatcherServlet时才会产生该事件。

public class SendEvent extends ApplicationEvent {
  String address;
  String name;
  public SendEvent(Object source, String name, String address) {
    super(source)
    this.name = name;
    this.address = address;
  }

}

事件监听接口:

Spring只有一个事件监听接口,ApplicationListener,继承该接口并实现onApplicationEvent(ApplicationEvent event)方法,在该方法中编写事件的处理逻辑。

public class SendNotifier implements ApplicationListener {
  pubnlic void onApplicationEvent(Application evt) {
    if(evt instanceof SendEvent) {
      // 事件的处理逻辑
    } else {
      // 容器本身的事件,不需要做任何处理
    }

  }

}

<bean id="sendListener" class="event.SendListener" />

每当容器发生事件时,此方法就会触发,将监听器配置在容器中。

使用:

public class Test {
  public static void main(String[] args) {
     ApplicationContext context = new ClasspathXmlApploicationContext("beans.xml");
     SendEvent event = new SendEvent("name1", "address1");
     context.publishEvent(event);
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值