您的位置:首页 > 其它

[置顶] 如何通过注解去读自定义的属性文件

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



这样就基本实现了自己所要的功能了。好久没写文了,由于工作加班,没有时间更新,所以的话最近偶尔有空,抓紧这间隙就随便写写吧,不知道对小伙伴有没有用。嘻嘻,如果想要更详细的方法,可以私信我。

    
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐