spring @Value注解#和$区别
一直以來(lái),在使用@Value注解的時(shí)候,都是使用#的風(fēng)格@Value("#{topic.topicName}"),但是也經(jīng)常會(huì)看到@Value("${topic.topicName}")風(fēng)格的屬性注入,今天特地研究了下區(qū)別:
- $注入的就是<context:property-placeholder location="classpath:config/*.properties" />加載的所有屬性;
- #則是spring EL,所以其實(shí)#{topic.topicName}就是一個(gè)topic對(duì)象的topicName屬性,在實(shí)際中,通常使用的方式是在spring配置文件中包含一個(gè)<util:properties id="application" location="classpath:config/application.properties" />,然后以#{application.topicName}的方式來(lái)使用。不過(guò)這種方式的限制就是因?yàn)槭荢pring EL,所以application.properties中以“."分隔的屬性無(wú)法直接注入,因?yàn)椴槐徽J(rèn)為是一個(gè)對(duì)象,所以要寫成@Value("#{application['topic.topicName'] ?: 25}")。
既然注入?yún)?shù),就有可能有些情況下會(huì)有默認(rèn)值的情況,同理,這兩種方式對(duì)于默認(rèn)值的語(yǔ)法要求是不同的,對(duì)于以屬性方式$注入的,格式為${ property?:?default_value }。對(duì)于以spring EL方式注入的,則為#{ obj.property?:?default_value },注意這里?:是一個(gè)操作符,而不是兩個(gè)操作符,這和java的java三元表達(dá)式有點(diǎn)不同。
例子可以參考:
http://www.cnblogs.com/larryzeal/p/5910149.html
spring EL可以參考:
http://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html
轉(zhuǎn)載于:https://www.cnblogs.com/zhjh256/p/7191854.html
總結(jié)
以上是生活随笔為你收集整理的spring @Value注解#和$区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SimpliciTI简介
- 下一篇: Selenium IDE安装和检查获取的