数据池的应用和反射
来源:互联网 发布:移动免流端口 编辑:程序博客网 时间:2024/06/05 08:14
数据池的应用
private static DataSource datasource=null;
static{//静态代码块初始化
//集合对象读取从配置文件中读取的键值对
Properties prop=new Properties("dbcp-config.properties"));
InputStream in=MyDataSource.class.getClassLoader().getReSourceAsStream();
prop.load(in);
//datasource:对数据库进行操作的数据源对象
datasource=BasicDataSourceFactory.createDataSource(prop);
}
// 获取连接
public static Connection getConnection() throws SQLException {
return dataSource.getConnection(); // 获取连接的时候从数据源中获取, 也就是从池中获得一个.
}
// 释放资源
public static void release(ResultSet rs, Statement st, Connection conn) {
if (rs != null)
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (st != null)
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (conn != null)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
反射
反射主要是指程序员可以访问、检测和修改其自身状态或行为的一种能力。在计算机领域,反射是指一类应用,它们能够自描述和子控制。通过采用某种机制来实现对自身行为的描述(Self-representation)和监测(Examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语句。
反射允许动态的发现和绑定类,方法,字段以及所有其他的由语言所产生的元素。反射可以简单的列举类、字段以及方法。在运行时完成创建实例、调用方法以及访问字段的工作。反射是Java被视为动态(或标准动态)语言的关键。
反射机制的功能:
1、 在运行时判断任意一个对象所属的类。
2、 在运行时构造任意一个类的对象。
3、 在运行时判断任意一个类所具有的成员变量和方法。
4、 在运行时调用任意一个对象的方法。通过反射甚至可以调用到private的方法。
5、 生成动态的代理。
Java.lang.Class和java.lang.reflect包中的Field、Constructor、Method、Array类:
1、 Class类是Java反射的起源,类得实例表示正在运行的java应用程序得类和接口。
2、 Field类封装反射类得属性。
3、 Constructor类封装反射的方法。
4、 Method类封装反射方法的一个实例。
5、 Aray类提供创建数组和访问数组的静态方法。该类所有的方法都是静态的。
JVM为每一种类型管理着一个独一无二的Class对象,它保存了对应类或接口的类型信息。要想获取类或接口的相应信息,需要先获取这个Class对象。
获得Class对象
1、调用Object类的getClass()方法来得到Class对象,这也是最常见的产生Class对象的方法。例如,
MyObject x=new MyObject();
Class c1 = x.getClass();
2、使用Class类的forName()静态方法获得与字符串对应的Class对象。Class c2=Class.forName("java.lang.String");
注意:参数字符串必须是类或接口的完全限定名。
3、使用类型名.class获取该类型对应的Class对象。例如,Class cl1 = Manager.class;
Class cl2 = int.class; Class cl3 = double[].class;
要在运行时获取某个类型的信息,需先获取这个类型所对应的Class对象,然后调用Class类提供的相应方法来获取。
1、获取指定类对应的Class对象
Class clazz = Class.forName("java.util.ArrayList");
2、 获取指定类的包名clazz.getPackage()获取此Class对象所对应的实体所在的包的信息描述类java.lang.Package的一个对象。
String packageName = clazz.getPackage().getName();
3、 获取指定类的修饰符
通过Class对象的getModifiers()方法可以获取此Class对象所对应的实体的用整数表示的类修饰符值。
int mod = clazz.getModifiers();
String modifier = Modifier.toString(mod);
4、 获取指定类的完全限定名
className = clazz.getName();
5、 获取指定类的父类
superClazz = clazz.getSuperclass();
6、 获取指定类实现的接口
通过Class对象的getInterfaces()方法可以获取此Class对象所对应的实体实现的所有接口的Class对象数组。Class[] interfaces = clazz.getInterfaces();
7、 获取指定类的成员变量
通过Class对象的getFields()方法可获取此Class对象所对应的实体的所有public字段(成员变量)。如果要获取所有字段,可以使用getDeclaredFields()方法
获取类的构造方法
Constructor[] constrcutors = clazz.getDeclaredConstructors();
获取类的成员方法
Method[] methods = clazz.getDeclaredMethods();
创建对象
使用无参构造方法
List list = (List) c.newInstance();
使用带参数的构造方法
第1步 获取指定类对应的Class对象。
第2步 通过Class对象获取满足指定参数类型要求的Constructor对象。
第3步 调用指定Constructor对象的newInstance方法,传入对应的参数值,创建对象。
Java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是“键=值”的格式,也就是说文件的每一行都是先定义一个键名,然后等于号后面是值,在properties文件中,可以用“#”来作注释,
JDK 中的 Properties 类存在于包java.util 中,该类继承自 Hashtable ,主要方法包括:
1、 getProperty(String key):用指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到key所对应的 value。
2、 load(InputStream inStream) :从输入流中读取属性列表(键和元素对)。通过对指定的文件进行装载来获取该文件中的所有键-值对,以供getProperty(String key) 来搜索。
3、 setProperty(String key, String value):调用Hashtable的方法put 。来设置“键-值”对。
4、 store(OutputStream out, String comments):以适合使用load方法加载到Properties表中的格式,将此Properties表中的属性列表(键和元素对)写入输出流。
5、 clear ():清除所有装载的“键-值”对。
- 数据池的应用和反射
- 反射的具体应用反射出方法和类等等
- C#反射和特性的应用
- java 反射和注解的简单应用
- Java的反射基本概念、语法和应用
- java反射的基本概念和简单应用
- .NET框架-应用特性和反射检查数据唯一性
- 读取form数据时,java反射的一点应用
- 元数据和反射
- 反射之一(静态反射基本概念和应用)
- 反射的简单应用
- 关于反射的应用
- 反射的实际应用
- 反射的应用
- android 反射的应用
- 反射机制的应用
- Java反射的应用
- C# 反射的应用
- linux下mmap的映射。
- 【编程语言】C++--华为面试题
- 使用static关键字保存和恢复程序运行状态
- IDE 不是程序员的唯一选择(一)
- Oracle笔记6(Fundamentals II)
- 数据池的应用和反射
- 2012 年 华为上机题 java 约瑟夫环
- open session and Hibernate事务处理机制
- 缩放记录
- Java中线程安全问题个人理解
- scanf和gets获取字符串时的区别
- ARM,FPGA,DSP的特点和区别是什么?
- shell如何模块化和复用——shell深入学习
- 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)