最近因一个项目需要迁移到另一个服务器上,而迁移的目标服务器是公用的服务器,需要将原有的数据源配置改为从自定义的配置文件读取,服务器都是用的Tomcat,以前的项目是在Tomcat里配置数据源,然后在程序中获取数据源里的连接,而新的服务器只提供了一个上传JSP文件的FTP方式,这种方式是没办法修改Tomcat配置文件配置数据源的,也就只好修改程序,将数据连接的部分改为读取自定义的配置文件
在此,考虑了几种方法
方法一:用Spring框架,将数据连接配置写在Spring的配置文件里,用Spring的注入方式生成对象,供程序调用
方法二:自定义一个xml文件,在数据连接写在xml中,写一个JavaBean读取xml
方法三:用Property方式定义配置配置文件,用JavaBean来读取设置
因为是一个很小的东东,为此一项而使用Spring框架,似乎有点浪费,用xml来作配置文件,自己写读取方法时也不算简单,最简单的还是第三种,也不想为这点改动用大刀,简单的就是最好的:)
首先新建一个读取配置文件的DBConfig.java(省略了包及getter,setter方法)
/**
* 这是一个获取数据库配置的类
* @author ZF
*/
public class DBConfig {
private String url;
private String driver;
private String userName;
private String password;
/**
* @param args
*/
public static void main(String[] args) {
DBConfig conf = new DBConfig();
}
/**
* 在构造函数里读取配置文件
*/
public DBConfig(){
Properties prop= new Properties();
try
{
//目录指到根目录的上级,是为了将配置文件放在WEB-INF目录下
//如果直接放在根目录下,则需将配置文件放在classes目录下
InputStream is = getClass().getResourceAsStream("/../dbconfig.property");
prop.load(is);
if(is!=null){
is.close();
}
}
catch(Exception e) {
e.printStackTrace();
}
this.setDriver(prop.getProperty("Driver"));
this.setUrl(prop.getProperty("URL"));
this.setUserName(prop.getProperty("user"));
this.setPassword(prop.getProperty("password"));
}
// getters()... and setters()...
}
然后在WEB-INF目录下新建配置文件dbconfig.property
Driver=com.mysql.jdbc.Driver
URL=jdbc:mysql://localhost/tsoa
user=mysqluser
password=mysqlpassword
修改获取数据连接的代码
//获取数据库连接配置
DBConfig dbconf = new DBConfig();
//根据连接配置获取数据库连接
Class.forName(dbconf.getDriver()).newInstance();
conn= DriverManager.getConnection(dbconf.getUrl(),dbconf.getUserName(),dbconf.getPassword());
测试通过,OK,在此记录一下