• spring boot 中用@value给static变量赋值


    需求:改写一个JedisUtils,工具类,所以最好用静态方法和变量。

    @value("${redis.host}")

    private static String redisHost;

    运行后发现注入失败。解决办法:看了网上大家的说法,有用中间变量的,有用set方法赋值的。试了一下都是可以成功赋值的,

    以下引用别人的代码:

    给参数注入,执行set方法(这里注意set方法中的static要去掉)

    public static String zhifuUrl;   
    @Value("${zhifu.url}")  
    public void setZhifuUrl(String url) {  
    CrmUtil.zhifuUrl = url;  
    }  
    

    通过中间变量赋值:

    public static String zhifuUrl;   
    @Value("${zhifu.url}")  
    private String zhifuUrlTmp;  
      
    @PostConstruct  
    public void init() {  
    zhifuUrl = zhifuUrlTmp;  
    }  
    

      

    最后需要注意的是这个在类上要加@Component,才可以成功注入。

    *********************************************************************************************************************************************************

    @Value("${}") 可以获取对应属性文件中定义的属性值。

    假如我有一个sys.properties文件 里面规定了一组值: web.view.prefix =/WEB-INF/views/

    在springMvc.xml文件中引入下面的代码

    <context:property-placeholder
     
    ignore-unresolvable="true" location="classpath:sys.properties" />
    

      

    这样就可以通过@Value("${web.view.prefix}")获取这个字符串,但是只能在springMvc.xml文件中扫描或者注册的bean中才能通过@Value("${web.view.prefix}")获取这个字符串,其他未在springMvc.xml扫描和定义的bean必须在相应的xml文件中引入上面代码才能使用@Value("${}”)表达式

    再controller或者其他组件中通过下面代码即可获取“”/WEB-INF/views/“”这个字符串

    	@Value("${web.view.prefix}")
    	private String prefix; 
    

      

    *********************************************************************************************************************************************************

    当需要在某个类中定义一个属性,并且该属性是一个已存在的bean,要为该属性赋值或注入时在该属性上一行使用@Resource(name="xxx"),相当于为该属性注入一个名称为xxx的bean。

    @Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定, 
    如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。

    @Resource(name="baseDao")     
    private BaseDao baseDao; 
    

     

    如BaseDao类使用@Value("${}”)获取了配置属性,则可以在其他类中使用@Resource注解标注这个类,然后get方法获取即可,不需要再次使用注解读取配置文件。

    ========================================================================================== 我希望每一篇文章的背后,都能看到自己对于技术、对于生活的态度。 我相信乔布斯说的,只有那些疯狂到认为自己可以改变世界的人才能真正地改变世界。面对压力,我可以挑灯夜战、不眠不休;面对困难,我愿意迎难而上、永不退缩。 其实我想说的是,我只是一个程序员,这就是我现在纯粹人生的全部。 ==========================================================================================
  • 相关阅读:
    Qt double转换成Qstring
    QT 控件ComboBox
    前端web项目打包(二)
    前端Web打包成可执行程序
    div中下拉框无法点击展开跟选中
    div下多个table并排排列
    VS将数据保存在excel表格中
    关于windows下任务栏应用程序标签消失问题的解决办法
    Java8中map()和flatMap()的区别
    Java对象的深拷贝
  • 原文地址:https://www.cnblogs.com/weihuang6620/p/9925158.html
Copyright © 2020-2023  润新知