package com.tievd.jyz.util; import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanWrapper; import org.springframework.beans.BeanWrapperImpl; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import java.util.HashSet; import java.util.Map; import java.util.Set; public class BeanUtil implements ApplicationContextAware { /** * 当前IOC * */ private static ApplicationContext applicationContext; /** * * 设置当前上下文环境,此方法由spring自动装配 * */ @Override public void setApplicationContext(ApplicationContext arg0) throws BeansException { applicationContext = arg0; } /** * 从当前IOC获取bean * * @param id * bean的id * @return * */ public static Object getObjectById(String id) { Object object = null; object = applicationContext.getBean(id); return object; } public static Map getBeansByType(Class clazz) { Map beanMap = applicationContext.getBeansOfType(clazz); return beanMap; } public static String[] getNullPropertyNames (Object source) { final BeanWrapper src = new BeanWrapperImpl(source); java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors(); Set emptyNames = new HashSet(); for(java.beans.PropertyDescriptor pd : pds) { Object srcValue = src.getPropertyValue(pd.getName()); if (srcValue == null) { emptyNames.add(pd.getName()); } } String[] result = new String[emptyNames.size()]; return emptyNames.toArray(result); } public static void copyPropertiesIgnoreNull(Object src, Object target){ BeanUtils.copyProperties(src, target, getNullPropertyNames(src)); } }