spring boot 中用@value给static变量赋值
需求:改写一个JedisUtils,工具类,所以最好用静态方法和变量。
@value("${redis.host}")
private static String redisHost;
运行后发现注入失败。解决办法:看了网上大家的说法,有用中间变量的,有用set方法赋值的。试了一下都是可以成功赋值的,
以下引用别人的代码:
给参数注入,执行set方法(这里注意set方法中的static要去掉)
|
1
2
3
4
5
|
public
static
String zhifuUrl;
@Value``(``"${zhifu.url}"``)
public
void
setZhifuUrl(String url) {
CrmUtil.zhifuUrl = url;
}
|
通过中间变量赋值:
|
1
2
3
4
5
6
7
8
|
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文件中引入下面的代码
|
1
2
3
|
<context:property-placeholder
ignore-unresolvable=``"true"
location=``"classpath:sys.properties"
/>
|
这样就可以通过@Value("{web.view.prefix}")获取这个字符串,其他未在springMvc.xml扫描和定义的bean必须在相应的xml文件中引入上面代码才能使用@Value("${}”)表达式
再controller或者其他组件中通过下面代码即可获取“”/WEB-INF/views/“”这个字符串
|
1
2
|
@Value``(``"${web.view.prefix}"``)
private
String prefix;
|
当需要在某个类中定义一个属性,并且该属性是一个已存在的bean,要为该属性赋值或注入时在该属性上一行使用@Resource(name="xxx"),相当于为该属性注入一个名称为xxx的bean。
@Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定,
如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。
|
1
2
|
@Resource``(name=``"baseDao"``)
private
BaseDao baseDao;
|
如BaseDao类使用@Value("${}”)获取了配置属性,则可以在其他类中使用@Resource注解标注这个类,然后get方法获取即可,不需要再次使用注解读取配置文件。
========================================================================================== 我希望每一篇文章的背后,都能看到自己对于技术、对于生活的态度。 我相信乔布斯说的,只有那些疯狂到认为自己可以改变世界的人才能真正地改变世界。面对压力,我可以挑灯夜战、不眠不休;面对困难,我愿意迎难而上、永不退缩。 其实我想说的是,我只是一个程序员,这就是我现在纯粹人生的全部。 ==========================================================================================
网友评论