有时候我们需要把一些带逗号的字符串解析为数组或者List、Set,如果自己转换的话比较麻烦,可以直接使用Spring的工具类StringUtils,通过配置文件调用该工具类方法即可。具体看例子

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:global.properties</value>
</list>
</property>
</bean> <bean id="envConfig" class="cn.hello.millet.EnvConfig">
<constructor-arg type="java.lang.String" value="${app.name}" />
<constructor-arg type="java.lang.String" value="${app.env}" />
<constructor-arg type="java.lang.String" value="${hostname}" />
<property name="deployGroup" value="${deploy.group}" />
<property name="configGroup" value="${config.group}" />
<property name="extraGroups">
<bean class="org.springframework.util.StringUtils" factory-method="commaDelimitedListToStringArray">
<constructor-arg type="java.lang.String" value="${app.groups}" />
</bean>
</property>
</bean>

  我们先通过PropertyPlaceholderConfigurer来读取global.properties配置文件,然后app.groups这个key所对应的值,也就是字符串“develop,test”作为参数注入到StringUtils的commaDelimitedListToStringArray方法中,而“factory-method”是静态工厂的方法注入,也就是让StringUtils调用commaDelimitedListToStringArray方法,把参数转换为一个String[]对象,最后赋值给extraGroups这个bean,通过set注入到EnvConfig对象中。这里说明一下,虽然这里定义的是StringUtils的构造器参数,实际上只是作为commaDelimitedListToStringArray的入参而已。具体代码如下

app.groups=develop,test
public class EnvConfig {

  private String[] extraGroups;

  public void setExtraGroups(String[] groups) {
this.extraGroups = groups;
}
}

  从上面例子我们可以看到,只需要通过配置就可以调用方法来分隔字符串。下面看下commaDelimitedListToStringArray这个方法的在StringUtils中的源码:

public static String[] commaDelimitedListToStringArray(String str) {
return delimitedListToStringArray(str, ",");
}

  当然Spring的StringUtils不仅只有commaDelimitedListToStringArray方法来处理字符串数组,其他方法详见StringUtils。

使用Spring的StingUtils的commaDelimitedListToStringArray来获取字符串数组的更多相关文章

  1. c# 获取字符串数组中最长的的字符串并输出最长的字符串

    求字符串数组中最大长度的字符串: 实质就是比较字符串的长度: 方案一: class Program { static void Main(string[] args) { string[] array ...

  2. 使用 sizeof 获取字符串数组的大小

    @2018-11-1 字符串组成的数组存放于指针数组中,使用 sizeof 获取数组大小 [验证] #include <stdio.h> #define BootScreen " ...

  3. Spring拦截器中通过request获取到该请求对应Controller中的method对象

    背景:项目使用Spring 3.1.0.RELEASE,从dao到Controller层全部是基于注解配置.我的需求是想在自定义的Spring拦截器中通过request获取到该请求对应于Control ...

  4. Spring MVC Restful Put方法无法获取参数值

    Spring MVC Restful 无法通过@ReqeustParam获取参数值 原因是Tomcat只支持POST/GET获取参数值,对于PUT这些方法需要通过HttpPutFormContentF ...

  5. Spring IOC 容器源码分析 - 获取单例 bean

    1. 简介 为了写 Spring IOC 容器源码分析系列的文章,我特地写了一篇 Spring IOC 容器的导读文章.在导读一文中,我介绍了 Spring 的一些特性以及阅读 Spring 源码的一 ...

  6. Spring core resourc层结构体系及JDK与Spring对classpath中资源的获取方式及结果对比

    1. Spring core resourc层结构体系 1.1. Resource相关结构体系 1.2. ResourceLoader相关体系 2. JDK与Spring对classpath中资源的获 ...

  7. Spring Cloud Config的配置中心获取不到最新配置信息的问题

    Spring Cloud Config的配置中心获取不到最新配置信息的问题 http://blog.didispace.com/spring-cloud-tips-config-tmp-clear/

  8. 根据Cron表达式,通过Spring自带的CronSequenceGenerator类获取下次执行时间

    Cron表达式通常用于执行一些定时任务,在本篇文章中,暂时不会记录如何根据Cron表达式来执行一些定时任务.本章主要的目的是根据Cron表达式,通过Spring自带的CronSequenceGener ...

  9. [No0000A4]DOS命令(cmd)批处理:替换字符串、截取字符串、扩充字符串、获取字符串长度

    1.替换字符串,即将某一字符串中的特定字符或字符串替换为给定的字符串.举例说明其功能:========================================= @echo off set a ...

随机推荐

  1. adjacent cache line prefetch

    adjacent cache line prefetch 预读取邻近的缓存数据. 计算机在读取数据时,会智能的认为要读取的数据旁边或邻近的数据也是需要的, 那么其在处理的时候就会将这些邻近的数据预先读 ...

  2. SQL Server2012在软件开发中的一些新特性

    官方给出了一大堆SQL2012相对于SQL2008R2的新特性,但是大多数对于普通开发人员来说都是浮云,根本用不到,下面就说说一些对于开发人员来说比较有用的新特性.   一.在SQL Server中终 ...

  3. 谷歌SEO老域名注册完全攻略

    老域名有优势,不管在百度和谷歌都是一样的. 我们查看搜索结果就能发现,谷歌里面很多排前十的网站都是N年前的,一零年以后的算是比较新的,很多产品网站域名是零几年,甚至很多排名更好的域名是九几年的. 谷歌 ...

  4. Spring与CXF整合

    1.首先引入CXF相关jar包以及spring相关jar包,因项目是maven项目,所以直接在pom.xml文件中引入以下依赖即可(以下只是CXF的依赖包,Spring的也要引入,相关的依赖参考我博客 ...

  5. socket长连接和短链接区别

    短连接 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束后就中断连接.短连接是指SOCKET连接后发送后接收完数据后马上断 ...

  6. DBDB的维护和管理

    挂载drbd前首先需要确认当前直接的DRDB分区是primary状态,可以从"cat /proc/drdb" 命令中查询节点状态.例如:[yongsan@mfsmaster drb ...

  7. 012-对象——魔术常量__CLASS__ __METHOD__ __FUNCTION__ __DIR__ __FILE__

    <?php /** *魔术常量__CLASS__ __METHOD__ __FUNCTION__ __DIR__ __FILE__ */ //魔术常量:__CLASS__ 得到类名. /*cla ...

  8. Android开发调试中遇到的Waiting for HOME解决方案

    显示问题如图: 基本解决思路:在AVD里面单独启动运行一次模拟器,然后尝试运行程序,基本会解决这个问题.

  9. 修改MAC过程

    首先打开PC的Telnet功能,如下: 对PC设置本地IP 2.cmd→telnet 192.168.1.230(出厂默认IP) 3.root →密码:20...................(公司 ...

  10. Database项目中关于Procedure sp_refreshsqlmodule_internal的错误

    最近项目中发现一怪问题,使用DB项目发布数据库时,总提示 “(110,1): SQL72014: .Net SqlClient Data Provider: Msg 1222, Level 16, S ...