[置顶] 如何通过注解去读自定义的属性文件
2018-03-29 14:39
302 查看
1、笔者之前在写项目碰到一些懊恼的问题,如对于动态后台读取出来的后台数据,需要动态加些灵活的备注和正则表达式,此时想到用属性文件读取的方式去获取 ,然后进行字符分割。然后达到想要的效果。下面我们来看下具体的操作流程:
注意:笔者使用的项目框架是基于SSM下的。步骤如下:
首先我们先观察数据然后定义属性文件
ContactNumber=ContactNumber&联系人数量&次&例如:10&^[1-9]\\d*|0 WXDTradingNumAndAmount=WXDTradingNumAndAmount&网信贷(微粒贷)授信额度低于15000元&元&例如:1-10000-20000&^[1-9]\\d*|0 WXDXYLJuageAge=WXDXYLJuageAge&网信贷信用乐年龄设置&岁&例如:<10->100&'' HXDFlyingNum=HXDFlyingNum&航信贷乘坐航班次数&次&例如:10&^[1-9]\\d*|0 HXDJuageAge=HXDJuageAge&行信贷年龄限制&岁&例如:<10->100&'' PhoneInNetData=PhoneInNetData&手机在网时长&分钟&例如:20&^[1-9]\\d*|0 PhoneJuageName=PhoneJuageName&手机号实名认证&了&例如:是或者否&'' PhoneInNet=PhoneInNet&手机在网状态&了&例如:在网&'' Overdue90Account=Overdue90Account&信用卡、贷款超过90天以上逾期的账户数&个&例如:10&^[1-9]\\d*|0 OnceLoanOverdue90Num=OnceLoanOverdue90Num&单笔信用卡、贷款超过90天以上逾期次数&个&例如:10&^[1-9]\\d*|0 TwoYearOtherCityQueryNum=TwoYearOtherCityQueryNum&其他城市两年内平台查询次数&次&例如:10-1(个人查询)-1(货后管理)-1(货款审批)-1(信用卡审批)&^[1-9]\\d*|0 TwoYearFirstTierCitiesQueryNum=TwoYearFirstTierCitiesQueryNum&一线城市两年内平台查询次数&次&例如:10-1(个人查询)-1(货后管理)-1(货款审批)-1(信用卡审批)&^[1-9]\\d*|0 PerYearOtherCityQueryNum=PerYearOtherCityQueryNum&半年内其他城市平台查询次数&次&例如:10-1(个人查询)-1(货后管理)-1(货款审批)-1(信用卡审批)&^[1-9]\\d*|0 PerYearFirstTierCitiesQueryNum=PerYearFirstTierCitiesQueryNum&半年内一线城市平台查询次数&次&例如:10-1(个人查询)-1(货后管理)-1(货款审批)-1(信用卡审批)&^[1-9]\\d*|0我们从数据库对应字段获取的数据参数如下:
由此可见他的参数时带字符拼接的,而我前台的要求是需要将他的参数解析出来,然后放入相对应的输入框,切需加入正则进行判断,不能输入其他的格式下面我们来看注解如何去获取这些属性文件配置的值
package com.hj.admin.service; import com.hj.admin.mapper.DecRuleInfoMapper; import com.hj.admin.model.DecRuleInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Service; import java.util.List; @Service @PropertySource(value="classpath:modelrule.properties",encoding = "utf-8") public class DecRuleInfoService extends AbstratService<DecRuleInfo> { @Value("${ContactNumber}")//对应属性文件的key字段 private String ContactNumber;//对应属性文件的value值 @Value("${WXDTradingNumAndAmount}") private String WXDTradingNumAndAmount; @Value("${WXDXYLJuageAge}") private String WXDXYLJuageAge; @Value("${HXDFlyingNum}") private String HXDFlyingNum; @Value("${HXDJuageAge}") private String HXDJuageAge; @Value("${PhoneInNetData}") private String PhoneInNetData; @Value("${PhoneJuageName}") private String PhoneJuageName; @Value("${PhoneInNet}") private String PhoneInNet; @Value("${Overdue90Account}") private String Overdue90Account; @Value("${OnceLoanOverdue90Num}") private String OnceLoanOverdue90Num; @Value("${TwoYearOtherCityQueryNum}") private String TwoYearOtherCityQueryNum; @Value("${TwoYearFirstTierCitiesQueryNum}") private String TwoYearFirstTierCitiesQueryNum; @Value("${PerYearOtherCityQueryNum}") private String PerYearOtherCityQueryNum; @Value("${PerYearFirstTierCitiesQueryNum}") private String PerYearFirstTierCitiesQueryNum; @Autowired private DecRuleInfoMapper decRuleInfoMapper; public static void getList(DecRuleInfo list, String params){ String[] split = params.split("&");//按照特定的拼接字符进行分割,然后分割的数据分给给对象赋值 if(list.getRuleName().equals(split[0])){ list.setCruleName(split[1]); list.setEndName(split[2]); list.set 9d54 Tips(split[3]); list.setzRule(split[4]); } } public List<DecRuleInfo> selectRule(String proId){ List<DecRuleInfo> list= decRuleInfoMapper.selectRuleByProID(proId); for (int i=0;i<list.size();i++){ getList(list.get(i),ContactNumber);//比对查询出来的值是否与key相同,如果相同就让他进行分割赋值 getList(list.get(i),WXDTradingNumAndAmount); getList(list.get(i),WXDXYLJuageAge); getList(list.get(i),HXDFlyingNum); getList(list.get(i),HXDJuageAge); getList(list.get(i),PhoneInNetData); getList(list.get(i),PhoneJuageName); getList(list.get(i),PhoneInNet); getList(list.get(i),Overdue90Account); getList(list.get(i),OnceLoanOverdue90Num); getList(list.get(i),TwoYearOtherCityQueryNum); getList(list.get(i),TwoYearFirstTierCitiesQueryNum); getList(list.get(i),PerYearOtherCityQueryNum); getList(list.get(i),PerYearFirstTierCitiesQueryNum); } return list; } }通过这种方式,我们就实现了读取属性文件的属性值,同时我们需要注意的是我们在加入注解@PropertySource时记得加上字符编码,否则读出来的值会出现乱码的情况。然后我们来看前台页面的效果
然后我们来看页面的效果。然后对比属性文件,由于没有全部拿出来,值列举了一部分,麻烦见谅!23333333
这样就基本实现了自己所要的功能了。好久没写文了,由于工作加班,没有时间更新,所以的话最近偶尔有空,抓紧这间隙就随便写写吧,不知道对小伙伴有没有用。嘻嘻,如果想要更详细的方法,可以私信我。
相关文章推荐
- 自定义View实例——下雨天画面(通过布局文件.xml中的自定义属性来设值)
- 光脚丫学LINQ(024):如何通过修改DBML文件生成自定义代码
- Spring AOP注解通过@Autowired,@Resource,@Qualifier,@PostConstruct,@PreDestroy注入属性的配置文件详解
- Spring AOP注解通过@Autowired,@Resource,@Qualifier,@PostConstruct,@PreDestroy注入属性的配置文件详解
- 如何加载和使用配置文件中的自定义实体属性
- springMvc 如何通过注解@Value 读取配置文件中的内容(.properties)
- 如何在android style文件中使用自定义属性
- Spring AOP注解通过@Autowired,@Resource,@Qualifier,@PostConstruct,@PreDestroy注入属性的配置文件详解
- 如何通过javascript操作web控件的自定义属性
- 如何通过javascript操作web控件的自定义属性
- Spring AOP注解通过@Autowired,@Resource,@Qualifier,@PostConstruct,@PreDestroy注入属性的配置文件详解
- 接下来的例子演示了Flex Gumbo中如何通过自定义Skin和alpha属性,创建透明填充色TextArea。
- 如何在自定义标签中获取spring通过@Service注解来的service
- 如何通过自定义注解实现AOP切点定义
- 自定义注解:通过监控文件的变化,实时更改工厂管理的实例
- 【动态页面】(三)之二:通过自定义注解读取Jar包的类名和属性名
- 如何自定义View及在配置文件中增加描述属性
- AndroidStudio中如何在android style文件中使用自定义属性
- 自定义注解:通过监控文件的变化,实时更改工厂管理的实例
- 属性动画资料文件如何编写?property-animation资源文件 属性动画如何自定义TypeEvaluator