java根据properties配置文件来实现功能模块的动态切换
2008-08-02 16:59
981 查看
无论我们是使用hibernate还是使用spring,struts,jsf等等的开源框架,都有一个共同点,那就是程序框架会根据配置文件的不同配置来动态的改变功能的实现,不过,这里的配置文件多是使用xml,xml是一种很很灵活的文档类型,他能够清晰的体现出数据之间的包含从属关系,但是在数据具有key-value映射关系而且相对来说结构简单的情况下,我们可以考虑更加简单的properties文件格式,java对properties提供了更加简单的内置支持;
下面是一个登陆模块,用户登陆的时候会有两种验证方式,一种是db验证,一种是file验证,信息存在于不同的存储介质里面,
下面是代码实现
package org.osgi.util;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class LoginUtil {
public static final String DEFAULTMETHID="DEFAULT";
private static String getLoginClsName(String filePath,String key) {
return LoginUtil.getProerties(filePath).getProperty(key);
}
/**
* @return the class name of login
*/
private static Properties getProerties(String filePath){
Properties properties=new Properties();
try {
InputStream in=new FileInputStream(filePath);
properties.load(in);
} catch (FileNotFoundException e) {
System.out.println("the file can't be found");
e.printStackTrace();
} catch (IOException e){
System.out.println("the file can't be load");
e.printStackTrace();
}
return properties;
}
/**
*
* @param filePath the configuration file path
* @return
*/
public static Object getLoginClsInstance(String filePath) {
Object instance=null;
try {
String loginMethodKey=LoginUtil.getLoginClsName(filePath,LoginUtil.DEFAULTMETHID);
instance=Class.forName(LoginUtil.getLoginClsName(filePath, loginMethodKey)).newInstance();
} catch (Exception e) {
System.out.println("can't get the class");
e.printStackTrace();
}
return instance;
}
}
改工具类实现了如何从配置文件中查找出当前所配置的验证方式;
package org.osgi.login;
public interface ILogin {
/**
* which type login method it is
*/
public void printf();
/**
*
* @param name the user's name
* @param pwd the user's password
* @return is it a user
*/
public boolean isUser(String name, String pwd);
}
package org.osgi.login;
public class DBLogin implements ILogin {
public boolean isUser(String name, String pwd) {
return false;
}
public void printf() {
System.out.println("DBLogin");
}
}
package org.osgi.login;
public class FileLogin implements ILogin {
public boolean isUser(String name, String pwd) {
return false;
}
public void printf() {
System.out.println("fileLogin");
}
}
以上是两种登陆模式,方便于相互之间的转换;
package org.osgi.TestDemo;
import org.osgi.login.ILogin;
import org.osgi.util.LoginUtil;
public class AppDemo {
/**
* @param args
*/
public static void main(String[] args) {
ILogin loginoer=(ILogin)LoginUtil.getLoginClsInstance("bin/LoginCfg.properties");
loginoer.printf();
}
}
配置文件如下:
db=org.osgi.login.DBLogin
file=org.osgi.login.FileLogin
DEFAULT=file
相关文章推荐
- 根据配置文件来切换不同服务的实现
- 用java代码实现从excel表格读取数据然后写入生成国际化配置文件properties
- Android根据xml配置文件动态修改九宫格功能配置
- java用spring实现配置文件properties的读取
- JAVA 动态加载properties配置文件
- AntisHsu studying 通过读取.properties配置文件中的键值来实现动态添加注解内容例如@Controller @RequestMapping(value = "${adminPa
- (转)实现对Java配置文件Properties的读取、写入与更新操作
- java web开发在web.xml配置<mime-mapping>实现浏览器根据文件类型自动打开
- 用Java根据目录名实现文件搜索功能
- [Java]ResourceBundle和Properties配置文件实现国际化
- Java 利用commons-configuration.jar 动态修改配置文件(.properties)
- Java 根据Properties读写Properties配置文件
- spring + druid 配置动态配置数据源以及多数据源切换功能实现
- Java实现的properties文件动态修改并自动保存工具类
- spring boot 动态切换application-xx.properties配置文件
- 根据配置文件动态生成JAVA类的一点思路
- java 使用properties文件配置动态信息
- java应用(非web应用)中log4j.properties动态修改配置文件,无需重启,就能立即生效,如何实现?
- 在python project中实现类似java project里的properties文件功能
- 使用webpack的动态模块功能实现类似包扫描来简化配置