您可以使用以下代码根据关闭(或刷新/启动)Web服务的时间来执行一些事件。
public class APIService implements ApplicationListener<ContextClosedEvent>
{
@Override
public void onApplicationEvent(ContextClosedEvent contextClosedEvent) {
//Do shutdown work.
}
}
有人告诉我,有一种注释驱动的方法可以执行此操作,而无需您实现此接口。具体来说,您应该能够使用自己喜欢的任何名称定义函数并对其进行注释,以使其在服务启动或关闭时执行。
我在春季书中或通过Google都找不到对此的引用。有人可以提供一个仅通过注释来执行上述代码的示例吗?
最佳答案
就the Spring 4+ documentation而言,没有您所描述的功能完全相同。
您可以使用以下方式模拟行为
@Component // defaults to eager initialization
class Setup {
@Autowired
private ApplicationContext context;
@PostConstruct
public void anyNameYouWant() {
System.out.println("starting");
}
@PreDestroy
public void hereToo() {
System.out.println("closing");
}
}
但是您将无法访问
ContextClosedEvent
,也无法访问全部ApplicationContextEvent
。