您可以使用以下代码根据关闭(或刷新/启动)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

10-06 15:35