Spring对于一个需要自动注入的类,首先应该在类上加入注解:@compone 或者@seveice等等。
由于对于静态成员变量,直接加@Value("xxxxx")是无法获取值的,运行时是在其他方法中调用为null,我们知道spring自动注入是通过调用该类的setter方法注入,因此可以通过添加该成员变量的setter方法,(注意:若用eclipse自动导入setter功能,出现的setter方法是静态static的,你需要去除static关键字),然后在出现的setter方法上加入@Value("xxxxx"),此时就能获得自动注入资源文件设置的值了。
对于单例模式,我们通常定义单例为private static Singlon instance;
通常可以采用以下的双重检查的方式:
private static Singlon getInstace() {
if(instance== null){
synchronized ( Singlon.class) {
if(instance == null){
instance= new Singlon();
}
}
}
return instance;
}
通过这种延迟加载的方式,我们可以在单例中引入注入的静态成员变量的值。
若通过"饿汉模式",则无法引用我们自动注入的静态变量,原因我们也知道,JAVA 类加载机制,加载循序的问题。
项目中遇到的问题,我刚好采用这种方式实现,所以在此处写一篇博文。一点浅见。