我的团队项目中有以下代码:
this.context = new ClassPathXmlApplicationContext("test_spring.xml");
this.task = ((Task)this.context.getBean("task"));
this.context.registerShutdownHook();
this.context.start();
我从未见过"开始"被调用的方法,我不明白是否需要启动方法?
Start this component. Should not throw an exception if the component is already running.
In the case of a container, this will propagate the start signal to all components that apply.
但我不明白它意味着什么。如果没有调用start方法或者它有什么帮助,有人可以解释会出现什么问题吗?
答案 0 :(得分:0)
Spring提供了一个ApplicationListener
接口来监听各种ApplicationEvent
。其中一个事件是ContextStartedEvent
。您可以创建一个实现ApplicationListener<ContextStartedEvent>
的类的bean。
当您调用start()
时,ApplicationContext
将发布此类事件以及为ApplicationListener
注册的所有ContextStartedEvent
bean(如果在上下文中找到,则会自动注册)得到通知。
如果您不致电start()
,他们将不会收到通知。