ueseu 2008-08-14 10:01
浏览 345
已采纳

Spring在启动时,事件机制怎么时候可以使用?

希望在系统启动时,或启动后立即触发事件(即context.publishEvent(event))

但在InitializingBean的afterPropertiesSet方法和BeanPostProcessor的postProcessAfterInitialization方法里触发的事件仍然无效,请问该用什么样的方式触发事件呢?
[b]问题补充:[/b]
1, 实现ApplicationContextAware拿到ApplicationContext来触发事件;
2, 实现ApplicationListener接口来接收事件

但是在系统启动过程中,或启动后无法立即触发事件,或者说是触发事件无效。实现InitializingBean后,在afterPropertiesSet方法中触发,或在实现BeanPostProcessor后,在
postProcessAfterInitialization中触发,事件都无法传递到实现ApplicationListener的Bean中,

只是在系统加载完成后,事件可以正常触发(如在执行某个客户端的请求时,可以很正常地触发事件)

其实我就想在系统启动完成后再通过触发事件来初始化另外一些代码。
[b]问题补充:[/b]
感觉我的代码跟 小疯子 提供的代码没什么不一样,但我的事件在afterPropertiesSet里就是无法触发成功。

我再试试

  • 写回答

2条回答 默认 最新

  • iteye_14762 2008-08-15 16:39
    关注

    [code="java"]
    public class Tigger implements InitializingBean, ApplicationContextAware {

    private ApplicationContext applicationContext;
    
    public void afterPropertiesSet() throws Exception {
        this.applicationContext.publishEvent(new TiggerEvent(new Object()));
    }
    
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }
    

    }
    [/code]

    [code="java"]
    public class TiggerEvent extends ApplicationEvent {

    private String name = "fuxueliang";
    
    public String getName() {
        return name;
    }
    
    public TiggerEvent(Object source) {
        super(source);
    }
    

    }

    [/code]
    [code="java"]
    public class TiggerListener implements ApplicationListener {

    public void onApplicationEvent(ApplicationEvent event) {
        if (event instanceof TiggerEvent) {
            TiggerEvent tiggerEvent = (TiggerEvent) event;
            System.out.println("+++++++++++++" + tiggerEvent.getName() + "++++++++++++++++");
        }
    }
    

    }
    [/code]

    [code="java"]


    [/code]
    三块代码, 一个配置, 启动的时候, 就打出了:
    [code="java"]
    +++++++++++++fuxueliang++++++++++++++++
    [/code]
    不知道你是怎么实现的?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 麒麟V10 arm安装gdal
  • ¥15 想用@vueuse 把项目动态改成深色主题,localStorge里面的vueuse-color-scheme一开始就给我改成了dark,不知道什么原因(相关搜索:背景颜色)
  • ¥20 OPENVPN连接问题
  • ¥15 flask实现搜索框访问数据库
  • ¥15 mrk3399刷完安卓11后投屏调试只能显示一个设备
  • ¥100 如何用js写一个游戏云存档
  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上