Properties配置文件转Bean对象
发布时间:2020-12-16 08:18:37 所属栏目:百科 来源:网络整理
导读:在XML配置文件中配置的类代码: public class AnnotationBean extends PropertyPlaceholderConfigurer implements BeanPostProcessor , InitializingBean { private static transient Log logger=LogFactory.getLog(AnnotationBean .class); private java.ut
在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对象的属相上使用, 以上代码纯属手打,可能有错误单词。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |