spring @Value注解#和$区别
生活随笔
收集整理的這篇文章主要介紹了
spring @Value注解#和$区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一直以來,在使用@Value注解的時候,都是使用#的風格@Value("#{topic.topicName}"),但是也經常會看到@Value("${topic.topicName}")風格的屬性注入,今天特地研究了下區別:
- $注入的就是<context:property-placeholder location="classpath:config/*.properties" />加載的所有屬性;
- #則是spring EL,所以其實#{topic.topicName}就是一個topic對象的topicName屬性,在實際中,通常使用的方式是在spring配置文件中包含一個<util:properties id="application" location="classpath:config/application.properties" />,然后以#{application.topicName}的方式來使用。不過這種方式的限制就是因為是Spring EL,所以application.properties中以“."分隔的屬性無法直接注入,因為不被認為是一個對象,所以要寫成@Value("#{application['topic.topicName'] ?: 25}")。
既然注入參數,就有可能有些情況下會有默認值的情況,同理,這兩種方式對于默認值的語法要求是不同的,對于以屬性方式$注入的,格式為${ property?:?default_value }。對于以spring EL方式注入的,則為#{ obj.property?:?default_value },注意這里?:是一個操作符,而不是兩個操作符,這和java的java三元表達式有點不同。
例子可以參考:
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
轉載于:https://www.cnblogs.com/zhjh256/p/7191854.html
總結
以上是生活随笔為你收集整理的spring @Value注解#和$区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SimpliciTI简介
- 下一篇: Selenium IDE安装和检查获取的