猿问

spring的getbean方法和直接new一个对象,有什么差别?

程序的目的是访问数据库进行数据查询操作,使用的是spring和c3p0连接池,spring配置了一个springContext的静态方法可以直接使用getbean来获得相应对象,
这里其他代码略去,只保留问题相关的代码如下:
          //调用数据库连接
          //JDBCConn jdbcConn = (JDBCConn) springContext.getBean("JDBCConn");   -----A
            JDBCConn jdbcConn = new JDBCConn();    ------B
            ResultSet rs = jdbcConn.jdbcconn(sourceid, sql);
想请教大虾的是:方法A和方法B有什么差别?体现在哪些方面?比如在数据库连接的时候A是沿用springContext第一次创建时的对象、而B是每次都新建一个连接?或者A和B获得的对象是一样的吗?


木子二月鸟
浏览 8125回答 4
4回答

木子二月鸟

也说一下自己的理解:通过调试代码,发现getbean的方式获得对象总是继承于springcontext的上下文信息,在数据库连接时如果上一次操作报错,那么getbean方式获得的对象在下次操作时依然报错;如果改为new的方式,则不存在这个问题。进一步推测,可能是和spring的bean生命周期管理有关,默认是单例模式,在通过web方式操作数据库时应该采用request或者session方式。以上都是推测,还是希望有大牛能够出面解惑~积分还是采纳给楼上的同志了,毕竟回答的人不多。。。

星鸿

数据库不会
随时随地看视频慕课网APP

相关分类

Java
我要回答