[Code]使用反射获取Spring的Bean
[Code]使用反射获取Spring的Bean
酷游博客

[Code]使用反射获取Spring的Bean

酷游
1月22日发布 /正在检测是否收录...
/**
 * Bean的转换类
 * 会将形如APP_INFO_SERVICE的字符串转换成T类型appInfoService
 * Created by hollis on 15/7/21.
 */

public class BeanTransverter implements BeanFactoryAware {
    private BeanFactory beanFactory;

    /**
     * 获取类型为clazz,beanId为enumName(A_BEAN -> aBean)的Bean。
     * @param enumName
     * @return
     */
    public T getBean(String enumName) {
        String beanName = toBeanName(enumName);
        return (T) beanFactory.getBean(beanName);
    }


    private String toBeanName(String enumName) {

        String lowerCase = enumName.toLowerCase();
        String replacedStr = StringUtils.replace(lowerCase, "_", " ");
        String capitaliseAllWords = StringUtils.capitaliseAllWords(replacedStr);
        String[] parts = StringUtils.split(capitaliseAllWords, " ");
        String join = StringUtils.join(parts, "");

        return StringUtils.uncapitalise(join);
    }


    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
        this.beanFactory = beanFactory;
    }
}


/**
 * @author hollis
 */
public class LabelItemProcessor implements ItemProcessor> {

    private BeanTransverter beanTransverter;

    public List process(AppinfoDO item) throws Exception {
        List appLabelDOs = new ArrayList();

        for(LabelItemEnum labelItem : LabelItemEnum.values()){
            LabelMarker labelMarker = beanTransverter.getBean(labelItem.toString());
            AppLabelDO appLabelDO = labelMarker.marking(item);
            if(StringUtils.isNotBlank(appLabelDO.getLabelName())){
                appLabelDOs.add(appLabelDO);
            }
        }
        return appLabelDOs;
    }

    public void setBeanTransverter(BeanTransverter beanTransverter) {
        this.beanTransverter = beanTransverter;
    }
}



    

© 版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 赞赏
评论
当前页面的评论已关闭
易航博客
SSL