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
spring @Value注解#和$区别的更多相关文章
- Spring中@Autowired注解、@Resource注解的区别 (zz)
		Spring中@Autowired注解.@Resource注解的区别 Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@ ... 
- 详解Java Spring各种依赖注入注解的区别
		注解注入顾名思义就是通过注解来实现注入,Spring和注入相关的常见注解有Autowired.Resource.Qualifier.Service.Controller.Repository.Comp ... 
- 【spring boot】mybatis启动报错:Consider defining a bean of type 'com.newhope.interview.dao.UserMapper' in your configuration. 【Mapper类不能被找到】@Mapper 和@MapperScan注解的区别
		启动报错: 2018-05-16 17:22:58.161 ERROR 4080 --- Disconnected from the target VM, address: '127.0.0.1:50 ... 
- 八 Spring的IOC的XML和注解的区别及其整合开发
		xml和注解的区别 xml和注解整合开发 注解:取消扫描配置开启注解配置 扫描:<context:component-scan base-package="" /> ... 
- Spring系列之Spring常用注解总结
		传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件 ... 
- 【SSM 2】spring常用注解
		声明:以下观点,纯依据个人目前的经验和理解,有不当之处,多指教! 一.基本概述 注解(Annotation):也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举 ... 
- Spring中注解的使用详解
		一:@Rsource注解的使用规则 1.1.案例演示 Spring的主配置文件:applicationContext.xml(因为我这里将会讲到很多模块,所以我用一个主配置文件去加载各个模块的配置文件 ... 
- Spring常用注解介绍【经典总结】
		Spring的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用Spring注解方式或者Spring XML配置方式. Spring注解方式减少了配置文件内容 ... 
- Spring常用注解简析
		1. Autowired 自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property.当然,getter看个人需求,如果私有属性需要对外提供的话,应当 ... 
随机推荐
- node微信公众号开发---域名绑定
			var TOKEN='weixin'; //必须与测试号所填写的Token相同 function checkSignature(params,token){ var key=[token,params ... 
- Linux配置eclipse实践
			有几年没有在Linux下用eclipse开发了,几年前是在CentOS 7下用eclipse开发的,好像用的还是较新的版本.最近有个项目要求在centos 下卡发,装上eclipse-cdt后,建立项 ... 
- Windows jmeter配置
			JMeter是Apache软件基金会的产品,用于对提供静态的和动态的资源服务器性能的测试.是一款很方便的测试软件. JMeter 要依附Java SE 环境 所以在启用JMeter之前要安装JAVA ... 
- web.config或App.config中AttachDBFilenamex相对路径问题
			<add name="employeeManagerConnectionString" connectionString="Data Source=.\SQLExp ... 
- CentOS7.5 防火墙指令
			防火墙指令 1. 查看防火墙状态: firewall-cmd --state 2. 启动防火墙 systemctl start firewalld.service 3. 关闭防火墙 systemctl ... 
- spark sql01
			package sql; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaSparkContext; i ... 
- wxpython(python3.5)安装
			安装步骤: http://blog.csdn.net/xiaodong193/article/details/51920283 注意:安装软件前需要阅读其中的README.txt,可快速知道安装方法, ... 
- hdu5029 树链剖分 + 线段树
			将树映射在线段上进行操作 然后每个 重链变成一个连续的区间 #include <iostream> #include <cstdio> #include <strin ... 
- Applegate 方法使用
			1. - (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotif ... 
- memcache、redis、mongoDB 如何选择?
			不同的 Nosql,其实应用的场景各有不同,所以我们应该先了解不同Nosql 之间的差别,然后分析什么才是最适合我使用的 Nosql. Nosql 介绍 Nosql 的全称是 Not Only Sql ... 
