Spring服务中允许有实例变量吗?

Jac*_*ack 4 java service spring

我有一个提供配置数据的 spring 服务。当 GUI 调用该服务时,它会从数据库加载配置数据。事实证明,这种情况在单个请求的渲染过程中经常发生。我想通过缓存配置数据来优化它。但是,我不确定这是否是一种好的编程风格,或者是否“允许”在服务中拥有实例变量。

这是我正在考虑做的一些示例代码:

@Serivce("MyConfigService")
public class MyConfigServiceImpl implements MyConfigService {

    private Config cachedConfig;

    @Override
    public Config loadConfig() {
        if (cachedConfig != null) {
            // load config
            cachedConfig = loadedConfig;
        }
        return cachedConfig;
    }

    @Override
    public saveConfig(Config config) {
        cachedConfig = null;
        // save the configuration
    }
}
Run Code Online (Sandbox Code Playgroud)

Nim*_*sky 5

拥有实例变量(不由 spring 管理)会导致服务变得线程不安全。所以我尽量避免它们,或者确保它们是线程安全的。

您可能需要查看@configurable注释@postconstuct来实现您的目标。