发表于: 2017-09-30 19:02:12
1 795
今日完成:
理解了连接池,jdbc的概念,对java的理解深了一点。
明日任务:
做完步骤17。
遇到的问题:
public class Conpool {
private static DataSource ds;
static {
try{
Properties pro = new Properties();
createDataSource(pro);
pro.load(Conpool.class.getClassLoader().getResourceAsStream("conpool.properties"));
ds = BasicDataSourceFactory.createDataSource(pro);}catch(Exception e){
throw new ExceptionInInitializerError("初始化连接错误,请检查配置文件!"); }
}
public static Connection getConnection() throws SQLException { return ds.getConnection(); }
//关闭所有
public static void closeAll(ResultSet rs, Statement stmt, Connection conn){
if(rs!=null){
try { rs.close();
} catch (SQLException e) { e.printStackTrace(); } }
if(stmt!=null){
try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } }
if(conn!=null){
try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } }
}
}
所有问题基于这段代码。
在网上找了连接池教程,在写代码的时候发现插入的包有冲突,
所有的包都插入完了,然后上网查也找不到答案,因为他们都没把包也放进代码页,跟着零散的步骤修修改改,都还是不行,然后自己认真看了看字想了一下,然后又想起网上好像说过dbcp和dbcp2是不一样的,我就想是不是包插错了,因为那个方法需求的是activation包的,然后我就把包全删了,一个一个注入,根据需求来选择包,然后就插好了,代码一点也没动,报错没了。
Conpool.class.getClassLoader().getResourceAsStream("conpool.properties")
然后发现这句话我只知道他是加载conpool.properties这个文件,然而并不知道其中的串串是什么意思,之后就了解了.getClass只可用于被实例化对象
.class用于Class(Class aa = new Class()中的类型)。返回值都是该类所在路径,getclassloader()是获取当前类的类加载器,这是什么没看懂,我只记得了getresourasstream前要用到loader才可以获取文件。
之后为了搞懂整个流程,对着师兄的例子看,看包源码什么的,效率不高且看不懂,但有意思,比前几天安装软件什么的爽多了,看例子可以学习规范、思路,思考这代码为什么这样写,这些参数什么意思等等。
收获:
做的事情不多,但是觉得比之前流畅,因为之前学了几天装环境,数据库,服务器搭建之类的,现在有了个大体的认知,觉得很多东西串了起来。
进度:步骤17。
评论