Ice 集成 Spring

把 Spring Framework 集成到 Ice 服务开发中其实很简单,我们只要确保 SpringContext 在一个 JVM 中只有一个实例即可。

另外一个需要注意的问题是我们需要注册 SpringContext 的 Shutdown hook,以便 JVM 在关闭时释放资源。

编写工具类

我们写个简单的静态工具类,之后 Ice Object 中就可以通过调用 SpringUtil.getBean(Class clazz) 获取到对应的 Bean 来完成具体业务操作了。

public class SpringUtil {
    private static ClassPathXmlApplicationContext ctx;

    public static synchronized <T> T getBean(Class<T> beanCls) {
        if (ctx == null) {
            ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
            ctx.registerShutdownHook();
        }

        return ctx.getBean(beanCls);
    }

    public static synchronized void shutdown() {
        if (ctx != null) {
            ctx.close();
            ctx = null;
        }
    }
}

这里使用的是 ClassPathXmlApplicationContext,所以我们在 /src/main/resources 目录下编写一个 applicationContext.xml 文件就可以了。

补充说明

最后需要说明的是,Spring 中的 Bean 都应该设置为 Lazy init。只有它们被真正调用时才触发创建过程,这在大量部署实例时是很关键的一个设置。

文章目录
  1. 1. 编写工具类
  2. 2. 补充说明
|