```java
package com.ihrm.system.utils;
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.Set;
public class SpringUtil 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 getObject(String id) {
Object object = null;
object = applicationContext.getBean(id);
return object;
}
public static String[] getNullPropertyNames (Object source) {
final BeanWrapper src = new BeanWrapperImpl(source);
java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();
Set<String> emptyNames = new HashSet<String>();
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));
}
}
忘了从哪个博主抄来的了,挺好用反正
测试实体
```java
package com.ihrm.system.utils;
public class aa {
private String name;
private String age;
public aa() {
}
public aa(String name, String age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public String toString() {
return "aa{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
}
package com.ihrm.system.utils;
public class test {
public static void main(String[] args) {
aa news = new aa();
news.setName("1");
news.setAge("2");
aa old = new aa();
old.setName("2");
old.setAge("3");
SpringUtil.copyPropertiesIgnoreNull(news, old);
System.out.println(news.toString());
System.out.println(old.toString());
}
}
自己运行就行看出效果了