本地Spring容器关闭的时机

本文探讨了在Shell脚本中调用Java功能时,由于Spring容器的生命周期问题导致的mybatis操作数据库失败。解决方案是在完成所有操作后再关闭Spring容器,避免影响mybatis。同时,文章提醒注意Spring配置的定时任务在多进程环境可能引发的问题,并提到JUnit中使用Spring容器的方法。
摘要由CSDN通过智能技术生成

一、背景引入
近期开发Spring应用的时候,基本的用户功能逻辑都通过SpringMVC框架铺垫好,通过暴露给前端的API进行功能的实现。但是在设计运营后台部分的时候,由于时间有限,采用了使用Shell脚本调用Java的方式,然后产生了一个让我头痛一阵子的问题:通过Shell调用Java功能,由于需要使用到mybatis操作数据库,mybatis与dao层强绑定,故被Shell脚本调用的Java也需要有一个Spring容器,且因为进程与tomcat进程不同,于是我写了一个下面的类:

public class SpringUtil {
    public static Object getBean(String name) {
        ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext(
                "applicationContext.xml");
        Object obj = ac.getBean(name);
        ac.close();
        return obj;
    }
}
通过这个类来初始化一个Spring容器,并从中获取一个Bean实例。但是,在调用mybatis的时候却一直提示DataSource is closed!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值