Java 대상 통합, org. springframework. beans. BeanUtils

1742 단어 JAVAspring
문제 필드:
  실제 개발 에서 두 대상 을 하나의 대상 으로 통합 하 는 수요 가 존재 할 수 있다. 전통 적 인 방법 은 당연히 하나의 get 과 set 이지 만 이런 코드 는 매우 불결 하 다. 우 리 는 반 사 를 바탕 으로 이 수 요 를 실현 할 수 있다.다행히 apache 와 spring 은 모두 이 방법 을 제공 합 니 다.
Spring:
public static void copyProperties(Object source, Object target) throws BeansException {
		copyProperties(source, target, null, (String[]) null);
}

이 방법 은 target 대상 을 주체 로 하여 source 대상 의 값 을 target 에 부여 합 니 다.기본 값 은 같은 필드 의 모든 값 을 직접 덮어 씁 니 다.
실제 수요 에서 일부 속성 만 복사 하면 우 리 는 이 방법 을 사용 하여 일부 필드 를 무시 할 수 있 습 니 다.
public static void copyProperties(Object source, Object target, String... ignoreProperties) throws BeansException {
		copyProperties(source, target, null, ignoreProperties);
	}

예: 값 이 있 는 필드 를 무시 하고,
public static String[] getValuePropertyNames (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 (null != srcValue) emptyNames.add(pd.getName());
        }
        String[] result = new String[emptyNames.size()];
        return emptyNames.toArray(result);
    }

이 방법 은 모든 값 이 있 는 방법 을 얻 기 위해 서 이다.물론 구체 적 인 필드 를 직접 지정 할 수도 있다.
 
 
apache:
이 방법 은 orig 방법의 값 을 dest 에 부여 하지만 덮어 쓰 는 방법 을 무시 합 니 다.
public static void copyProperties(Object dest, Object orig) throws IllegalAccessException, InvocationTargetException {
        BeanUtilsBean.getInstance().copyProperties(dest, orig);
    }

좋은 웹페이지 즐겨찾기