Properties配置文件转Bean对象

来源:互联网 发布:js打砖块游戏图片素材 编辑:程序博客网 时间:2024/06/06 03:05

在XML配置文件中配置的类代码:

public class AnnotationBean extends PropertyPlaceholderConfigurer implements BeanPostProcessor, InitializingBean{private static transient Log logger=LogFactory.getLog(AnnotationBean .class);private java.util.propertise pros;@SuppressWarnings("unchecked")private Class[] enableClassList={String.class};@SuppressWarnings("unchecked")public void setEnableClssList(Class[] enableClassList){    this.enableClassList=enableClassList;}public Object postProcessAfterInitialization(Object bean,String beanName) throws BeansException{    Field[] fields=bean.getClass().getDeclaredFields();    for(Field field:fields){        if(logger.isDebugEnabled()){        StringBuilder sb=new StringBuilder();        sb.append("=========");        .append(field.getType())        .append("=========")        .append(field.getName)        .append("=========")        .append(field.isAnnotionPresent(Properties.class));        logger.debug(sb.toString);        }        //TODO            if(field.isAnnotationPresent(Properties.class)){            if(filterType(field.getType().toString())){            Properties p=field.getAnnotation(Properties .class);            RefletionUtils.makeAccessible(field);            String pName;            if("".equals(p.name())){            pName=field.getName();            }else{            pName=p.name();            }            //中文转码            String propVal=pros.getProperty(pName);            String trans="";            if(propVal != null){                trans=new String(propVal.getByte("ISO-8859-1"),"UTF-8");            }            field.set(bean,trans);            }        }    }    return bean;}@SuppressWarnings("unchecked")private boolean filterType(String type){if(type != null){    for(Class c:enableClassList){    if(c.toString().equals(type)){        return true;    }    }    return false;    }else{    return true;    }}public Object postProcessBeforeInitialization(Obejct bean,String beanName)throws BeansException{    return bean;}public void afterPropertiesSet()throws Exception{pros=margeProperties();}}

applicationContext.xml文件中的配置代码:

<bean id="propertyConfig" class="xxx.xxx.AnnotationBean ">    <property name="order" value="1"/>    <property name="ignoreUnresolvblePlaceholders" value="true"/>    <property name="locations">        <list>            <value>classpath:xxxx.properties</value>        </list>    </property></bean>

其中用到的自定义注解类代码:

@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface Properties{String name() default "";}

关于自定义注解在配置文件绑定的bean对象的属相上使用,
这种配置方式就是可以把配置文件映射成Java的bean对象。
一般常用的还有读取配置文件,用文件流的方式读取,网上讲解示例偏多。

以上代码纯属手打,可能有错误单词。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 屁扒骨折疼要怎么办 宝宝发高烧怎么办能快速退烧 屁股上长了纹路怎么办 手机充电头歪了怎么办 屁股挠烂了化脓怎么办 手机充电那坏了怎么办 孩子在学校被老师冤枉怎么办 初中学校不好我该怎么办 天气太热屁股淹了怎么办 骑车骑的屁股疼怎么办 爬山时屁股摔紫青了怎么办 宝宝不肯脱裤子拉粑粑怎么办 国家对无地农民怎么办 生完孩子骨架变大怎么办 17岁长高很慢怎么办? 出月子腿着凉了怎么办 脚着凉了脚疼怎么办 腿着凉了特别疼怎么办 孩子骨龄大2两年怎么办 和人吃饭很尴尬怎么办 头不自觉向右偏怎么办 靠墙站立腰疼怎么办 小腿酸痛乏力肌肉萎缩怎么办 搬重物后手臂疼怎么办 和尚鹦鹉吃了盐怎么办 刚买鹦鹉不上手怎么办 word的文件时间改了怎么办 图强gps编码丢失怎么办 武统台湾后岛民怎么办 没有你我怎么办是什么歌 ios 12软件闪退怎么办 来大姨妈想吐怎么办 3岁宝宝体重轻怎么办 硕士延期毕业考上博士怎么办 中国人移民欧洲饮食不习惯怎么办 出车祸了报警警察不管怎么办 高中的孩子不好好上学怎么办 和老公消费观念不合拍怎么办 去医院没带现金怎么办 微信读书下架了怎么办 24岁血压有点高怎么办