Spring中 静态成员变量的注入,以及其他静态成员变量的单例延迟加载--查漏补缺

来源:互联网 发布:淘宝联盟app 编辑:程序博客网 时间:2024/06/18 08:35

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 类加载机制,加载循序的问题。

项目中遇到的问题,我刚好采用这种方式实现,所以在此处写一篇博文。一点浅见。


原创粉丝点击