一直以来,在使用@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注解#和$区别相关推荐

  1. spring里面 @Controller和@RestController注解的区别

    问题:spring里面 @Controller和@RestController注解的区别 spring里面 @Controller和@RestController注解的区别 Web MVC和REST ...

  2. Spring系列之Spring常用注解总结

    参看博客:https://www.cnblogs.com/xiaoxi/p/5935009.html 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺 ...

  3. Spring使用注解配置依赖注入

    大部分情况下,使用Spring配置依赖注入时,都是使用注解来进行配置,因为注解比xml要方便和简单.不过类似于数据源对象这种配置信息容易变更的对象除外,这种对象使用xml文件来进行配置会更适合,方便于 ...

  4. Spring常用注解总结

    传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文 ...

  5. spring autowired idea都匹配上了_你清楚这几个Spring常用注解吗?

    作者:平凡希http://cnblogs.com/xiaoxi/p/5935009.html 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: 如 ...

  6. java中spring的注解_spring中的各种注解解析

    Spring中的注解大概可以分为两大类: 1)spring的bean容器相关的注解,或者说bean工厂相关的注解: 2)springmvc相关的注解. spring的bean容器相关的注解,先后有:@ ...

  7. Spring Boot注解

    文章目录 简介 @SpringBootApplication @EnableAutoConfiguration 条件自动配置 @ConditionalOnClass 和 @ConditionalOnM ...

  8. java spring boot 注解验证_如何理解Java原生注解和Spring 各种注解?

    作者:digdeep .cnblogs.com/digdeep/p/4525567.html 导引 Spring中的注解大概可以分为两大类: spring的bean容器相关的注解,或者说bean工厂相 ...

  9. Spring IOC注解开发

    Spring IOC注解开发 @(Spring)[Spring, ioc, 注解] Spring IOC注解开发 Spring的IOC的注解使用步骤 创建项目引入jar包 引入配置文件 创建相关包和类 ...

最新文章

  1. 全球及中国操纵杆控制系统行业应用动态与十四五形势分析报告2022版
  2. 烂泥:centos单独编译安装gd库
  3. spring boot + vue + element-ui全栈开发入门——项目部署
  4. JS 清空table
  5. lucene学习笔记_学习Lucene
  6. Kmplayer播放器 绿色免安装版 2016 中文版
  7. python正则表达式面试题_吐血总结!50道Python面试题集锦(4)
  8. Spring Data JPA 动态拼接条件的通用设计模式
  9. PHP notice/warning 对性能的影响
  10. 读取Apache访问日志,查看每一个独立客户端连接获得的字节数
  11. 电信网通南北分治 学者呼吁应查处
  12. 番茄时间管理法(Pomodoro Technique)
  13. 智慧城市系列之智能交通系统(ITS)
  14. VBS病毒(爱虫病毒) 源代码
  15. 计算机主板提示ahci,电脑BIOS没有AHCI功能没有办法BIOS刷新怎么办
  16. 几种比较好看的颜色代码
  17. unity3d:Matrix4x4矩阵位移,缩放,旋转
  18. 地球空间数据交换格式
  19. 解决问题“The App ID ‘XXXXX‘ appears to be in use by the App Store, so it can not be removed at this ti”
  20. 云智慧发布电商618网站性能监测报告

热门文章

  1. elastic-job 的简单使用
  2. Wordpress安装简要说明
  3. 10gocm-gt;session3-gt;数据备份与恢复
  4. install scrapy with pip and easy_install
  5. 9.Tornado下的一个简易Blog--2013-05-21
  6. Ajax搜索结果页面下方的分页按钮的生成
  7. IT人员加班处于恐惧之中
  8. Wigner-Ville分布算法的C++实现
  9. 今天收到 OCP 证书
  10. android 再按一次退出程序