spring怎么注解读取properties
答案:2 悬赏:30
解决时间 2021-03-20 22:21
- 提问者网友:空白
- 2021-03-20 19:32
spring怎么注解读取properties
最佳答案
- 二级知识专家网友:你把微笑给了谁
- 2021-03-20 20:19
你就当成xml配置就行了,实现方法不同而已,一个是读取xml,一个是读取annotation,然后的步骤大多一样了。
全部回答
- 1楼网友:為→妳鎖鈊
- 2021-03-20 20:49
最常用读取properties文件的方法
inputstream in = getclass().getresourceasstream("资源name");这种方式要求properties文件和当前类在同一文件夹下面。如果在不同的包中,必须使用:
inputstream ins = this.getclass().getresourceasstream("/cn/zhao/properties/testpropertiespath2.properties");
java中获取路径方法
获取路径的一个简单实现
反射方式获取properties文件的三种方式
1 反射方式获取properties文件最常用方法以及思考:
java读取properties文件的方法比较多,网上最多的文章是"java读取properties文件的六种方法",但在java应用中,最常用还是通过java.lang.class类的getresourceasstream(string name) 方法来实现,但我见到众多读取properties文件的代码中,都会这么干:
inputstream in = getclass().getresourceasstream("资源name");
这里面有个问题,就是getclass()调用的时候默认省略了this!我们都知道,this是不能在static(静态)方法或者static块中使用的,原因是static类型的方法或者代码块是属于类本身的,不属于某个对象,而this本身就代表当前对象,而静态方法或者块调用的时候是不用初始化对象的。
问题是:假如我不想让某个类有对象,那么我会将此类的默认构造方法设为私有,当然也不会写别的共有的构造方法。并且我这个类是工具类,都是静态的方法和变量,我要在静态块或者静态方法中获取properties文件,这个方法就行不通了。
那怎么办呢?其实这个类就不是这么用的,他仅仅是需要获取一个class对象就可以了,那还不容易啊--
取所有类的父类object,用object.class难道不比你的用你正在写类自身方便安全吗 ?呵呵,下面给出一个例子,以方便交流。
import java.util.properties;
import java.io.inputstream;
import java.io.ioexception;
public final class testproperties {
private static string param1;
private static string param2;
static {
properties prop = new properties();
inputstream in = object. class .getresourceasstream( "/test.properties" );
try {
prop.load(in);
param1 = prop.getproperty( "inityears1" ).trim();
param2 = prop.getproperty( "inityears2" ).trim();
} catch (ioexception e) {
e.printstacktrace();
}
}
private testproperties() {
}
public static string getparam1() {
return param1;
}
public static string getparam2() {
return param2;
}
public static void main(string args[]){
system.out.println(getparam1());
system.out.println(getparam2());
}
}
运行结果:
151
152
当然,把object.class换成int.class照样行,呵呵,大家可以试试。
另外,如果是static方法或块中读取properties文件,还有一种最保险的方法,就是这个类的本身名字来直接获取class对象,比如本例中可写成testproperties.class,这样做是最保险的方法
2 获取路径的方式:
file fileb = new file( this .getclass().getresource( "" ).getpath());
system. out .println( "fileb path: " + fileb);
2.2获取当前类所在的工程名:
system. out .println("user.dir path: " + system. getproperty ("user.dir"))3 获取路径的一个简单的java实现
public static string getpath(string parentdir, string filename) {
string path = null;
string userdir = system.getproperty("user.dir");
string userdirname = new file(userdir).getname();
if (userdirname.equalsignorecase("lib")
|| userdirname.equalsignorecase("bin")) {
file newf = new file(userdir);
file newp = new file(newf.getparent());
if (filename.trim().equals("")) {
path = newp.getpath() + file.separator + parentdir;
} else {
path = newp.getpath() + file.separator + parentdir
+ file.separator + filename;
}
} else {
if (filename.trim().equals("")) {
path = userdir + file.separator + parentdir;
} else {
path = userdir + file.separator + parentdir + file.separator
+ filename;
}
}
return path;
}
4 利用反射的方式获取路径:
inputstream ips1 = enumeration . class .getclassloader() .getresourceasstream( "cn/zhao/enumstudy/testpropertiespath1.properties" );
inputstream ips2 = enumeration . class .getresourceasstream( "testpropertiespath1.properties" );
inputstream ips3 = enumeration . class .getresourceasstream( "properties/testpropertiespath2.properties" );
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |