在开发公司的项目的时候,因以前没有用过spring,所以在一个普通的类中使用了jdbcTemplate,如类似下面的class:
public class test(){
public void test(JdbcTemplate jdbcTemplate,String sql){
SqlRowSet srs = jdbcTemplate.queryForRowSet(sqlStr);
......
}
}
上面的方法是做报表的时候每次取报表数据集需要用到的,这个报表的功能开发完成后,这个报表功能多点击几次,就会出现在上面的sql执行语句住卡住,在debug模式下发现,此时执行到上面的sql语句时候,就执行完了,但是实际上sql语句下的代码块都未执行。出现此类问题,我觉得应该是此处的jdbcTemplate已经脱离的spring的管理,所以jdbcTemplate都没有被spring做类似关闭等“善后”的处理,导致这个class的方法反复执行的过程的中,可能出现了是内存溢出等问题吧。我没看spring的内容代码,也是个spring新手,只能这样推测,希望看到此处的高手能留言详细解答,同时记录此处也给自己做个笔记。解决这个问题只需要改成下面的内容即可:
SqlRowSet srs = jdbcTemplate.queryForRowSet(sqlStr);
test.test(srs);
public class test(){
public static void test(SqlRowSet srs){
// SqlRowSet srs = jdbcTemplate.queryForRowSet(sqlStr);
......
}
}