參考:http://www.shareniu.com/article/73.htm
一.需求是想將我的寫一個方法能在項目啟動后就運行,之前使用了redis的消息監聽器,感覺可以照着監聽器這個思路做,於是想到了sringboot的監聽器
二.目前spring boot中支持的事件類型如下
-
ApplicationFailedEvent:該事件為spring boot啟動失敗時的操作
-
ApplicationPreparedEvent:上下文context准備時觸發
-
ApplicationReadyEvent:上下文已經准備完畢的時候觸發
-
ApplicationStartedEvent:spring boot 啟動監聽類
-
SpringApplicationEvent:獲取SpringApplication
-
ApplicationEnvironmentPreparedEvent:環境事先准備
三.監聽器的使用
第一:首先定義一個自己使用的監聽器類並實現ApplicationListener接口。
@Componen
public class MessageReceiver implements ApplicationListener<ApplicationReadyEvent> { private Logger logger = LoggerFactory.getLogger(MessageReceiver.class); private UserService userService = null; @Override public void onApplicationEvent(ApplicationReadyEvent event) { ConfigurableApplicationContext applicationContext = event.getApplicationContext(); //解決userService一直為空 userService = applicationContext.getBean(UserService.class);
System.out.println("name"+userService.getName()); } }
第二:通過SpringApplication類中的addListeners方法將自定義的監聽器注冊進去
public class Application { public static void main(String[] args) { SpringApplication application = new SpringApplication(Application.class); application.addListeners(new MessageReceiver()); application.run(args); } }
啟動項目