1

在我们的应用程序中,我们通常有一些在应用程序范围内使用的资源(实用程序),例如可能是 apache HttpClient,或者在我的情况下ConcurrencyUtils,它是一个实用程序类,用于管理所有线程池以用于cpu密集和io任务(添加一些调度程序用于反应流等......很多自定义的东西)。

现在,当我通过 spring 初始化我的上下文时,我必须做一些不自然的事情(为了初始化和销毁​​静态资源)

在此处输入图像描述

请注意,这ConcurrencyUtil只是一个没有用的假类,我们从不使用它,但我们使用静态方法,ConcurrencyUtils并且这个类只确保调用 init 和 destroy (我不知道如何确保在所有 bean 之后调用destroy销毁)...

在此处输入图像描述

那么我们如何在 spring 上下文创建任何 bean 之前和 spring 上下文释放其所有 bean 之后运行一段代码(并且本身即将被回收)?

用spring初始化和释放静态资源的正确方法是什么?

4

1 回答 1

2

这可能工作正常。您也可以将其放在一个类中,该类位于扫描 bean 的类路径中:

@Configuration
public class ConcurrencyConfig {

    @PostConstruct
    public void init(){
        ConcurrencyUtil.init();
    }

    @PreDestroy
    public void destroy(){
        ConcurrencyUtil.destroy();
    }
}

我猜这看起来更好一些。

于 2015-12-21T07:31:15.020 回答