一、spring(基础10) 注解@Value详解[1]

一 配置方式

@value需要参数,这里参数可以是两种形式:

[html] view
plain
 copy

  1. @Value("#{configProperties['t1.msgname']}")或者@Value("${t1.msgname}");

这两形式,在配置上有什么区别:

1、@Value("#{configProperties['t1.msgname']}")这种形式的配置中有“configProperties”,其实它指定的是配置文件的加载对象:配置如下:

[html] view
plain
 copy

  1. <bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
  2. <property name="locations">
  3. <list>
  4. <value>classpath:/config/t1.properties</value>
  5. </list>
  6. </property>
  7. </bean>

这样配置就可完成对属性的具体注入了;

2、@Value("${t1.msgname}")这种形式不需要指定具体加载对象,这时候需要一个关键的对象来完成PreferencesPlaceholderConfigurer,

这个对象的配置可以利用上面配置1中的配置,也可以自己直接自定配置文件路径。

    如果使用配置1中的配置,可以写成如下情况:

[html] view
plain
 copy

  1. <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
  2. <property name="properties" ref="configProperties"/>
  3. </bean>

如果直接指定配置文件的话,可以写成如下情况:

[html] view
plain
 copy

  1. <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
  2. <property name="location">
  3. <value>config/t1.properties</value>
  4. </property>
  5. </bean>

二 用法

Spring 通过注解获取*.porperties文件的内容,除了xml配置外,还可以通过@value方式来获取。
使用方式必须在当前类使用@Component,xml文件内配置的是通过pakage扫描方式,
例如:<context:component-scan base-package="pakage_name" />
[html] view
plain
 copy

  1. package com.jumore.finance.pay.request.lianlian;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.stereotype.Component;
  4. /**
  5. * 连连请求参数基类
  6. * @ClassName: LianLianBaseRequest
  7. * @Description:
  8. * @Author: zdq
  9. * @Date: 2015年10月28日
  10. */
  11. @Component("lianLianBaseRequest")
  12. public class LianLianBaseRequest {
  13. /** 商户号 **/
  14. @Value("#{configProperties['lianlian.oidPartner']}")
  15. private String oid_partner;
  16. /** 加密key **/
  17. @Value("#{configProperties['lianlian.MD5Key']}")
  18. private String md5_key;
  19. /** 连连公钥 **/
  20. @Value("#{configProperties['lianlian.lianlianPubKey']}")
  21. private String lianlian_pub_key;
  22. /** 公钥 **/
  23. @Value("#{configProperties['lianlian.pubKey']}")
  24. private String pub_key;
  25. /** 私钥 **/
  26. @Value("#{configProperties['lianlian.priKey']}")
  27. private String pri_key;
  28. /** 参数字符集编码 **/
  29. @Value("#{configProperties['lianlian.inputCharset']}")
  30. private String charset_name;
  31. /** 版本 **/
  32. @Value("#{configProperties['lianlian.version']}")
  33. private String version;
  34. /** 签名类型 **/
  35. @Value("#{configProperties['lianlian.signType']}")
  36. private String sign_type;
  37. /** 业务类型 **/
  38. @Value("#{configProperties['lianlian.busiPartner']}")
  39. private String busi_partner;
  40. /** 订单有效时间(分钟) **/
  41. @Value("#{configProperties['lianlian.validOrder']}")
  42. private String valid_order;
  43. // 认证支付
  44. @Value("#{configProperties['lianlian.authPay.payUrl']}")
  45. private String authPay_url;// 认证支付地址
  46. @Value("#{configProperties['lianlian.authPay.notifyUrl']}")
  47. private String authPay_notify_url;// 服务器异步通知地址
  48. @Value("#{configProperties['lianlian.authPay.returnUrl']}")
  49. private String authPay_url_return;// 支付结束同步页面
  50. @Value("#{configProperties['lianlian.authPay.backUrl']}")
  51. private String authPay_back_url;// 认证支付修改银行卡页面
  52. // 网关充值
  53. @Value("#{configProperties['lianlian.gateway.payUrl']}")
  54. private String gateway_url;// 网关支付地址,必须
  55. @Value("#{configProperties['lianlian.gatewayPay.notifyUrl']}")
  56. private String gateway_notify_url;// 服务器异步通知地址[个人]
  57. @Value("#{configProperties['lianlian.gatewayPay.returnUrl']}")
  58. private String gateway_url_return;// 支付结束同步页面[个人]
  59. @Value("#{configProperties['lianlian.gatewayPay.qyNotifyUrl']}")
  60. private String gateway_qyNotify_url;// 服务器异步通知地址[企业]
  61. @Value("#{configProperties['lianlian.gatewayPay.qyReturnUrl']}")
  62. private String gateway_url_qyReturn;// 支付结束同步页面[企业]
  63. @Value("#{configProperties['lianlian.gatewayPayAndBuy.notifyUrl']}")
  64. private String buy_gateway_notify_url;// 服务器异步通知地址[个人购买充值]
  65. @Value("#{configProperties['lianlian.gatewayPayAndBuy.returnUrl']}")
  66. private String buy_gateway_url_return;// 支付结束同步页面[个人购买充值]
  67. // 提现代发
  68. @Value("#{configProperties['lianlian.cash.distributeUrl']}")
  69. private String distribute_url;// 代发地址
  70. @Value("#{configProperties['lianlian.distribute.notifyUrl']}")
  71. private String distribute_notify_url;// 服务器异步通知地址
  72. @Value("#{configProperties['lianlian.apiVersion']}")
  73. private String distribute_api_version;
  74. // 支行信息
  75. @Value("#{configProperties['lianlian.cash.queryBankBranchUrl']}")
  76. private String distribute_bankBranch_url;// 地址
  77. // 订单查询
  78. @Value("#{configProperties['lianlian.base.queryOrderUrl']}")
  79. private String queryOrder_url;
  80. public String getGateway_qyNotify_url() {
  81. return gateway_qyNotify_url;
  82. }
  83. public void setGateway_qyNotify_url(String gateway_qyNotify_url) {
  84. this.gateway_qyNotify_url = gateway_qyNotify_url;
  85. }
  86. public String getGateway_url_qyReturn() {
  87. return gateway_url_qyReturn;
  88. }
  89. public void setGateway_url_qyReturn(String gateway_url_qyReturn) {
  90. this.gateway_url_qyReturn = gateway_url_qyReturn;
  91. }
  92. public String getBuy_gateway_notify_url() {
  93. return buy_gateway_notify_url;
  94. }
  95. public void setBuy_gateway_notify_url(String buy_gateway_notify_url) {
  96. this.buy_gateway_notify_url = buy_gateway_notify_url;
  97. }
  98. public String getBuy_gateway_url_return() {
  99. return buy_gateway_url_return;
  100. }
  101. public void setBuy_gateway_url_return(String buy_gateway_url_return) {
  102. this.buy_gateway_url_return = buy_gateway_url_return;
  103. }
  104. public String getOid_partner() {
  105. return oid_partner;
  106. }
  107. public void setOid_partner(String oid_partner) {
  108. this.oid_partner = oid_partner;
  109. }
  110. public String getMd5_key() {
  111. return md5_key;
  112. }
  113. public void setMd5_key(String md5_key) {
  114. this.md5_key = md5_key;
  115. }
  116. public String getLianlian_pub_key() {
  117. return lianlian_pub_key;
  118. }
  119. public void setLianlian_pub_key(String lianlian_pub_key) {
  120. this.lianlian_pub_key = lianlian_pub_key;
  121. }
  122. public String getPub_key() {
  123. return pub_key;
  124. }
  125. public void setPub_key(String pub_key) {
  126. this.pub_key = pub_key;
  127. }
  128. public String getPri_key() {
  129. return pri_key;
  130. }
  131. public void setPri_key(String pri_key) {
  132. this.pri_key = pri_key;
  133. }
  134. public String getCharset_name() {
  135. return charset_name;
  136. }
  137. public void setCharset_name(String charset_name) {
  138. this.charset_name = charset_name;
  139. }
  140. public String getVersion() {
  141. return version;
  142. }
  143. public void setVersion(String version) {
  144. this.version = version;
  145. }
  146. public String getSign_type() {
  147. return sign_type;
  148. }
  149. public void setSign_type(String sign_type) {
  150. this.sign_type = sign_type;
  151. }
  152. public String getBusi_partner() {
  153. return busi_partner;
  154. }
  155. public void setBusi_partner(String busi_partner) {
  156. this.busi_partner = busi_partner;
  157. }
  158. public String getValid_order() {
  159. return valid_order;
  160. }
  161. public void setValid_order(String valid_order) {
  162. this.valid_order = valid_order;
  163. }
  164. public String getAuthPay_url() {
  165. return authPay_url;
  166. }
  167. public void setAuthPay_url(String authPay_url) {
  168. this.authPay_url = authPay_url;
  169. }
  170. public String getAuthPay_notify_url() {
  171. return authPay_notify_url;
  172. }
  173. public void setAuthPay_notify_url(String authPay_notify_url) {
  174. this.authPay_notify_url = authPay_notify_url;
  175. }
  176. public String getAuthPay_url_return() {
  177. return authPay_url_return;
  178. }
  179. public void setAuthPay_url_return(String authPay_url_return) {
  180. this.authPay_url_return = authPay_url_return;
  181. }
  182. public String getAuthPay_back_url() {
  183. return authPay_back_url;
  184. }
  185. public void setAuthPay_back_url(String authPay_back_url) {
  186. this.authPay_back_url = authPay_back_url;
  187. }
  188. public String getGateway_url() {
  189. return gateway_url;
  190. }
  191. public void setGateway_url(String gateway_url) {
  192. this.gateway_url = gateway_url;
  193. }
  194. public String getGateway_notify_url() {
  195. return gateway_notify_url;
  196. }
  197. public void setGateway_notify_url(String gateway_notify_url) {
  198. this.gateway_notify_url = gateway_notify_url;
  199. }
  200. public String getGateway_url_return() {
  201. return gateway_url_return;
  202. }
  203. public void setGateway_url_return(String gateway_url_return) {
  204. this.gateway_url_return = gateway_url_return;
  205. }
  206. public String getDistribute_url() {
  207. return distribute_url;
  208. }
  209. public void setDistribute_url(String distribute_url) {
  210. this.distribute_url = distribute_url;
  211. }
  212. public String getDistribute_notify_url() {
  213. return distribute_notify_url;
  214. }
  215. public void setDistribute_notify_url(String distribute_notify_url) {
  216. this.distribute_notify_url = distribute_notify_url;
  217. }
  218. public String getDistribute_api_version() {
  219. return distribute_api_version;
  220. }
  221. public void setDistribute_api_version(String distribute_api_version) {
  222. this.distribute_api_version = distribute_api_version;
  223. }
  224. public String getDistribute_bankBranch_url() {
  225. return distribute_bankBranch_url;
  226. }
  227. public void setDistribute_bankBranch_url(String distribute_bankBranch_url) {
  228. this.distribute_bankBranch_url = distribute_bankBranch_url;
  229. }
  230. public String getQueryOrder_url() {
  231. return queryOrder_url;
  232. }
  233. public void setQueryOrder_url(String queryOrder_url) {
  234. this.queryOrder_url = queryOrder_url;
  235. }
  236. }

xml配置:

[html] view
plain
 copy

  1. <!-- 启动包扫描功能,以便注册带有@Controller、@Service、@repository、@Component等注解的类成为spring的bean -->
  2. <context:component-scan base-package="com.jumore.finance.pay.request"/>
  3. <bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
  4. <property name="locations">
  5. <list>
  6. <value>classpath*:conf/lianlian.properties</value>
  7. </list>
  8. </property>
  9. </bean>
  10. <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
  11. <property name="properties" ref="configProperties" />
  12. </bean>

properties配置:



二、官方文档[2]

Reference:

[1] 小米加大炮, spring(基础10) 注解@Value详解, http://blog.csdn.net/zengdeqing2012/article/details/50736119

[2] Rod Johnson. Juergen Hoeller, Spring Framework Reference Documentation, 4,1,6,RELEASE:119

Spring 注解@Value详解的更多相关文章

  1. Spring注解_详解

    @Autowired 注释 将 @Autowired 注释标注在成员变量上   import org.springframework.beans.factory.annotation.Autowire ...

  2. Spring注解标签详解@Autowired @Qualifier等 @Slf4j

    @Slf4j @Slf4j注解实现日志输出 自己写日志的时候,肯定需要: private final Logger logger = LoggerFactory.getLogger(LoggerTes ...

  3. Spring注解标签详解@Autowired @Qualifier等

    http://blog.csdn.net/wangsr4java/article/details/42777855 @Component.@Repository.@Service.@Controlle ...

  4. spring事务配置详解

    一.前言 好几天没有在对spring进行学习了,由于这几天在赶项目,没有什么时间闲下来继续学习,导致spring核心架构详解没有继续下去,在接下来的时间里面,会继续对spring的核心架构在继续进行学 ...

  5. Spring Boot 配置文件详解

    Spring Boot配置文件详解 Spring Boot提供了两种常用的配置文件,分别是properties文件和yml文件.他们的作用都是修改Spring Boot自动配置的默认值.相对于prop ...

  6. 转:springmvc常用注解标签详解

    Spring5:@Autowired注解.@Resource注解和@Service注解 - IT·达人 - 博客园--这篇顺序渐进,讲得超级好--此人博客很不错http://www.cnblogs.c ...

  7. spring事务管理(详解和实例)

    原文地址: 参考地址:https://blog.csdn.net/yuanlaishini2010/article/details/45792069 写这篇博客之前我首先读了<Spring in ...

  8. Spring DI使用详解

    Spring DI使用详解 一.介绍 DI的定义:依赖注入,为类里面的属性设值.例如,我们之前的setName方法就是在为name属性设值. IOC与DI的关系:IOC进行对象的创建,DI进行值的注入 ...

  9. 【SSM框架】Spring笔记 --- 事务详解

    1.Spring的事务管理: 事务原本是数据库中的概念,在实际项目的开发中,进行事务的处理一般是在业务逻辑层, 即 Service 层.这样做是为了能够使用事务的特性来管理关联操作的业务. 在 Spr ...

随机推荐

  1. Java自学-异常处理 Exception

    Java 异常 Exception 异常定义: 导致程序的正常流程被中断的事件,叫做异常 步骤 1 : 文件不存在异常 比如要打开d盘的LOL.exe文件,这个文件是有可能不存在的 Java中通过 n ...

  2. python json库

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写. 1.json库的使用 使用 JSON 函数需要导入 json 库:import jso ...

  3. DOM创建节点

    1.DOM--document object model 常用的节点类型: 元素节点:(标签) 属性节点:(标签里的属性) 文本节点:(文本节点) 2,document有个属性叫nodetype,返回 ...

  4. iOS - 屏幕刷新 ADisplayLink

    什么是CADisplayLink CADisplayLink是一个能让我们以和屏幕刷新率相同的频率将内容画到屏幕上的定时器.我们在应用中创建一个新的 CADisplayLink 对象,把它添加到一个r ...

  5. vue项目的构建过程

    确保已经安装了node和npm 1.安装vue-cli npm i vue-cli -g 2.安装vue-router npm i vue-router --save 3.安装vue-router n ...

  6. Beego 学习比较8:SQL语句

    SQL语句 1>     常用的SQL语句 1->新增  insert into 表名(字段A,字段B,…) Values(字段A值,字段B值,…) 2->更新  update 表名 ...

  7. 《JavaScript高级程序设计》笔记:新兴的API

    requestAnimationFrame() 大多数电脑显示器的刷新频率60HZ,大概相当于每秒钟重绘60次.因此,最平滑动画的最佳循环间隔是1000ms/60,约等于17ms. mozReques ...

  8. 简述-selenium对web实现自动化测试

    首先,我是基于python进行对selenium操作和使用的,主要分为selenium的实现原理和selenium的操作这两大部分的简单分享(由于本人水平有限,仅做基础的概述和总结): 一.selen ...

  9. 使用awk格式化输出文本

    注意:本文并不是一篇awk入门文章,而是偏重实例讲解 awk借鉴了c语法,因此awk在许多地方还保留有c语言的痕迹,比如printf语句:for,if的语法结构等 介绍 最简单地说,AWK 是一种用于 ...

  10. 从SQLAlchemy的“缓存”问题说起

    https://www.jianshu.com/p/c0a8275cce99 0.4792017.11.22 00:07:04字数 1631阅读 6493 问题描述 最近在排查一个问题,为了方便说明, ...