복붙노트

[SPRING] 도저를 스프링 부트와 함께 사용하는 방법?

SPRING

도저를 스프링 부트와 함께 사용하는 방법?

나는 스프링 부트 프로젝트에 참여 중이다. 방금 주석 구성이 있습니다. 엔티티를 DTO로, DTO를 엔티티로 변환하기 위해 도저를 포함하고 싶습니다. 도저 웹 사이트에서 봄 XML 구성 파일에 다음 구성을 추가해야한다고 설명합니다. xml 파일이 아니라 주석 구성 Java 클래스가 있으므로 Java 구성 클래스로 변환하는 방법을 모르겠습니다.

<bean id="org.dozer.Mapper" class="org.dozer.DozerBeanMapper">
  <property name="mappingFiles">
    <list>
      <value>dozer-global-configuration.xml</value>
      <value>dozer-bean-mappings.xml</value>
      <value>more-dozer-bean-mappings.xml</value>
    </list>
  </property>
</bean>

누군가가 내게 모범을 보이면 매우 유용 할 것입니다. 감사

해결법

  1. ==============================

    1.이런 식으로 뭔가를해야한다고 생각합니다 :

    이런 식으로 뭔가를해야한다고 생각합니다 :

    @Configuration
    public class YourConfiguration {
    
      @Bean(name = "org.dozer.Mapper")
      public DozerBeanMapper dozerBean() {
        List<String> mappingFiles = Arrays.asList(
          "dozer-global-configuration.xml", 
          "dozer-bean-mappings.xml",
          "more-dozer-bean-mappings.xml"
        );
    
        DozerBeanMapper dozerBean = new DozerBeanMapper();
        dozerBean.setMappingFiles(mappingFiles);
        return dozerBean;
      }
    
      ...
    }
    
  2. ==============================

    2.단지 누군가가 xml 도저 파일을 피하려고합니다. Java에서 직접 빌더를 사용할 수 있습니다. 나를 위해 그것은 주석 컨텍스트 Spring 컨텍스트에 들어가는 방법입니다.

    단지 누군가가 xml 도저 파일을 피하려고합니다. Java에서 직접 빌더를 사용할 수 있습니다. 나를 위해 그것은 주석 컨텍스트 Spring 컨텍스트에 들어가는 방법입니다.

    매핑 api dozer에서 더 많은 정보보기

        @Bean
    public DozerBeanMapper mapper() throws Exception {
        DozerBeanMapper mapper = new DozerBeanMapper();
        mapper.addMapping(objectMappingBuilder);
        return mapper;
    }
    
    BeanMappingBuilder objectMappingBuilder = new BeanMappingBuilder() {
        @Override
        protected void configure() {
            mapping(Bean1.class, Bean2.class)
                    .fields("id", "id").fields("name", "name");
        }
    };
    

    제 경우에는 더 효율적이었습니다 (최소한 처음). 벤치 마크 나 다른 것을하지 않았습니다.

  3. ==============================

    3.DozerBeanMapper 대신 DozerBeanMapperFactoryBean을 사용하는 경우 이와 같은 것을 사용할 수 있습니다.

    DozerBeanMapper 대신 DozerBeanMapperFactoryBean을 사용하는 경우 이와 같은 것을 사용할 수 있습니다.

    @Configuration
    public class MappingConfiguration {
    
        @Bean
        public DozerBeanMapperFactoryBean dozerBeanMapperFactoryBean(@Value("classpath*:mappings/*mappings.xml") Resource[] resources) throws Exception {
            final DozerBeanMapperFactoryBean dozerBeanMapperFactoryBean = new DozerBeanMapperFactoryBean();
            // Other configurations
            dozerBeanMapperFactoryBean.setMappingFiles(resources);
            return dozerBeanMapperFactoryBean;
        }
    }
    

    이렇게하면 매핑을 자동으로 가져올 수 있습니다. 간단히 매퍼를 삽입하고 사용하십시오.

    @Autowired
    private Mapper mapper;
    

    도저 5.5.1에서 DozerBeanMapperFactoryBean이 제거되었습니다. 따라서 업데이트 된 버전으로 가고 싶다면 아래처럼 할 필요가 있습니다.

    @Bean
    public Mapper mapper(@Value(value = "classpath*:mappings/*mappings.xml") Resource[] resourceArray) throws IOException {
        List<String> mappingFileUrlList = new ArrayList<>();
        for (Resource resource : resourceArray) {
            mappingFileUrlList.add(String.valueOf(resource.getURL()));
        }
        DozerBeanMapper dozerBeanMapper = new DozerBeanMapper();
        dozerBeanMapper.setMappingFiles(mappingFileUrlList);
        return dozerBeanMapper;
    }
    

    위 설명대로 매퍼 삽입

    @Autowired
    private Mapper mapper;
    

    그리고 아래 예제처럼 사용하십시오.

    mapper.map(source_object, destination.class);
    

    예 :     mapper.map (admin, UserDTO.class);

  4. from https://stackoverflow.com/questions/28369433/how-to-use-dozer-with-spring-boot by cc-by-sa and MIT license