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

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.setTips(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


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



 
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值