博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring xml properties split with comma for list
阅读量:5891 次
发布时间:2019-06-19

本文共 1792 字,大约阅读时间需要 5 分钟。

在注入spring bean 属性值的时候常常会用到list, 一般使用方式例如以下:

<bean id="testBean" class="com.mytest.TestBean">

    <property name="myList">

         <list>

             <value> 1 </value>

             <value> 2 </value>

         </list>

    </properties>

</bean>

可是假设将这个list的值通过el表达式从properties文件里获取,怎样做到,properties中存储的是键值对的数据。是不能正确存储列表数据的。仅仅能使用字符串切割成数组、列表的形式。至于字符串的切割能够自己来切割也能够使用现有的spEL。

1. properties 中的配置(逗号切割的字符串)

    

2. bean的list属性

     

3. spring xml bean  注冊 属性值

4. bean属性的setter 获取到了我们想要的结果

-------------------------------------------------

先不要急着用,其它spring还提供了更好用的InlineList, 即以大括号计算, 如 "{'a','b','c'}"  , 所以还能够这样配置

xx.properties

imageDomains={'ezhe.com','gozap.com','chouti.com'}

spring-service.xml

-------------------------------------------------

另外,假设要注入List<Bean> 且使用properties 属性占位符来配置,应该怎么做?

org.springframework.expression.spel.standard.TokenKind

// ordered by priority - operands first	LITERAL_INT, LITERAL_LONG, LITERAL_HEXINT, LITERAL_HEXLONG, LITERAL_STRING, LITERAL_REAL, LITERAL_REAL_FLOAT,	LPAREN("("), RPAREN(")"), COMMA(","), IDENTIFIER,	COLON(":"),HASH("#"),RSQUARE("]"), LSQUARE("["),	LCURLY("{"),RCURLY("}"),	DOT("."), PLUS("+"), STAR("*"),  MINUS("-"), SELECT_FIRST("^["), SELECT_LAST("$["), QMARK("?"), PROJECT("!["),	DIV("/"), GE(">="), GT(">"), LE("<="), LT("<"), EQ("=="), NE("!="),	MOD("%"), NOT("!"), ASSIGN("="), INSTANCEOF("instanceof"), MATCHES("matches"), BETWEEN("between"),	SELECT("?["),   POWER("^"),	ELVIS("?:"), SAFE_NAVI("?."), BEAN_REF("@"), SYMBOLIC_OR("||"), SYMBOLIC_AND("&&"), INC("++"), DEC("--")

这里能够看到有个BEAN_REF("@") 这个就是 spEL引用bean

--------------------------------------------------------------------------------------------------------------------------------------

以下简要分析一下 spEL 解析

整体思路就是: 使用字符串切割 将 目标对象(target)、运算符、函数、參数等,假设是函数在getValue时使用反射机制运行,并获取结果

你可能感兴趣的文章
Android PopupWindow的使用
查看>>
[转]Linux下的lds链接脚本详解
查看>>
centos 7 配置yum本地源及yum命令使用
查看>>
mysql+mycat实现读写分离
查看>>
http协议特点,web资源,url通用格式
查看>>
学习安卓开发[1] - 程序结构、Activity生命周期及页面通信
查看>>
安装和卸载软件包
查看>>
NGINX介绍及配置
查看>>
Go语言-make陷阱和闭包函数
查看>>
cocos2dx 3.10 网狐经典版PC手机端三网通源码搭建
查看>>
开课啦|四维创智2019企业信息安全免费培训班开班通知
查看>>
socket_ftp下载实例_完善功能
查看>>
外行人都能看得懂的Spring Cloud服务注册与发现,错过了血亏!
查看>>
内部类详解
查看>>
navigationOptions属性介绍
查看>>
开源的CPU芯片和SoC设计即将到来
查看>>
springboot2整合Activiti7
查看>>
不会录音转文字,教你怎么把录音转文字
查看>>
【速学速记】lambda表达式的两种应用场景「面试用到」
查看>>
人工智能受邀2019中国国际服装设计创新赛 “人机大战”将展开
查看>>