ApplicationContext的事件机制&&让Bean获取Spring容器

ApplicationContext事件机制是观察者模式的实现。简单地说就是,一个类做出了改变,另一个监听类立马能够监听到,并做出相应的动作。

比如说客户端某各类做出了改变(比如说要求发送短信验证码),服务端的监听类立马做出相应,向客户手机发送一个验证码。

    用代码来说的话,Spring的容器事件有两个重要成员:
        ApplicationEvent类:容器事件,必须由ApplicationContext发布
        ApplicationListener接口:监听器,可有容器中的任何监听器Bean担任。

一个普通的Java类继承了ApplicationEvent类,就可以作为Spring的容器事件
而监听器类必须实现ApplicationListener接口,并实现onApplicationEvent()方法。事件容器发生任何事件,此方法都被触发。

而监听器类不需要像AWT那样采用编码变成,只需要像普通的Bean一样在xml配置文件配置一下就可以使用。



让Bean获取Spring容器

一般情况下我们都是先创建Spring容器,再调用Spring容器的getBean()方法来获取Spring容器中的Bean。

而当一些情况下,我们需要让Bean获取Spring容器的时候。比如我们的Bean需要有一个方法,但是该方法必须借助Spring才能实现。这时候就需要通过Bean来获取Spring了。

为了让Bean获取它所在的Spring容器,可以让该Bean实现BeanFactoryAware接口。同时实现该接口中的setBeanFactory(BeanFactory beanFactory)方法。

public class SpringTest6 implements ApplicationContextAware{
    ApplicationContex ctx;
    public void setBeanFactory(ApplicationContex applicationContext){
        this.applicationContext = applicationContext;
    }

    public void printHi(){
        System.out.println(ctx.getMessage());
    }

}

你可能感兴趣的:(spring)