spring 中 @value 注解的使用

在spring 3中,新增了一个注解@value,通过它,我们可以很方便的加载项目中的 XXX.properties 属性文件(以下统称 属性文件),由于近期使用到了该注解,所以,特意在此记录一下,以便加强理解。

下面我们先来看看,spring 3.1官方文档中,关于value注解的解释。

spring3.1_@value

首先我们看见的是,@value注解是位于spring 的org.springframework.beans.factory.annotation 下。
第二,我们看到了,它需要一个String 类型的value,在个人粗浅的理解下,这个value应该指的是,在注解里面所设定的要访问的属性文件的value值。
然后再看下面,就是获取value详情,从下面的例子来看,我上面关于vlaue的定义是正确的。在网上其他地方,我看见有小伙伴说,有两种读取属性文件,一种是像上面例子,“#{systemProperties.myProp}”,另外一种就是,将#换成"$"的,”${systemProperties.myProp}”这种形式,对于他们的区别,大家可以自行了解下,我们在这里就只说“#{systemProperties.myProp}”这种形式。

要使用@value注解读取属性文件,首先你得在你的配置文件(spring配置文件)里面,加载你的属性文件,在这里我用的是 util:properties 来读取配置文件,想要使用它呢,就必须现在配置文件里面引用

<beans xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd">
</beans>

这些命名空间。

空间引用好了,就可以把你的属性文件配置进来,比如,我在WEB-INF的config文件夹下有一个名为user的属性文件,那么,我就在我的spring配置文件里这样配置。

<util:properties id="config" location="WEB-INF/config/user.properties"></util:properties>

这样配置完成之后,spring在ioc容器里会自动将该属性文件注册进来,然后,在你项目需要的地方,加上这个注解,就可以读取到属性文件里面的内容了。

    @Value("#{config['com.chat.name']}")
    private String name;

属性文件:

**user.properties**
com.chat.name= Jack

打印的内容是,

System.out.println("jdbc_url: "+name);

结果:jdbc_url: Jack

好啦,这就算是完成读取了!

当然,可能有人会问,如果我要读取多个属性文件呢?那该怎么处理呢?
不用担心,这里也有处理的方法!请接着往下看。

不就是多加一个util:properties标签嘛,有何难的。。。

是的,通过这个我们可以知道,一个util:properties标签只能加载一个属性文件,且该标签的id不能为空,且必须是唯一的,若有重复的话,则会后面加载的有值,前面加载的值为null。

属性文件:

**user.properties**
com.chat.name= Jack

**boss.properties**
boss.account= 41115794689333622**

配置文件:

    <util:properties id="config" location="WEB-INF/config/user.properties"></util:properties>
    <util:properties id="config" location="WEB-INF/config/boss.properties"></util:properties>

输出结果:

jdbc_url: null
boss_account:41115794689333622**

所以这一点大家要注意,不要落坑。
另外最后一点建议就是,属性的命名里最好不要带圆点,可以用下划线代替。

好啦,今天就写到这里,学无止境,生生不息。

发布了30 篇原创文章 · 获赞 40 · 访问量 14万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览