如何在服务课上获得豆子?

发布于 2025-02-09 03:38:29 字数 688 浏览 1 评论 0原文

我正在尝试定义ModelMapper的配置,所有其他类都可以共享。 我创建了一个配置类:

@Configuration
@AllArgsConstructor
public class ModelMapperConfig {

    protected final ModelMapper mapper;

    @Bean
    public ModelMapper getMapper() {
        mapper.addMappings(new PropertyMap<MerchantDTO, Merchant>() {
            @Override
            protected void configure() {
                skip(destination.getId());
            }
        });
        return mapper;
    }
}

但是当我在另一个服务中使用constructor di时:

private final ModelMapper mapper;

我会发现一个错误

The dependencies of some of the beans in the application context form a cycle:

I'm trying to define a configuration for ModelMapper that can be shared by all other classes.
I created a Configuration class:

@Configuration
@AllArgsConstructor
public class ModelMapperConfig {

    protected final ModelMapper mapper;

    @Bean
    public ModelMapper getMapper() {
        mapper.addMappings(new PropertyMap<MerchantDTO, Merchant>() {
            @Override
            protected void configure() {
                skip(destination.getId());
            }
        });
        return mapper;
    }
}

but when I use constructor DI in another service:

private final ModelMapper mapper;

I get an error that

The dependencies of some of the beans in the application context form a cycle:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

就是爱搞怪 2025-02-16 03:38:29

TIS是我们使用的方式:

配置文件:

import org.modelmapper.ModelMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig {

@Bean
public ModelMapper modelMapper() {
    ModelMapper modelMapper = new ModelMapper();
    modelMapper.addMappings(ModelMapperConfig.userToUserDTO());
    return modelMapper;
  }
}

用于深度映射的配置:

import org.modelmapper.PropertyMap;

class ModelMapperConfig {

static PropertyMap<User, UserDTO> userToUserDTO() {
    return new PropertyMap<>() {
        protected void configure() {
            map().setOfficeName(source.getOffice().getOfficeName());
        }
      };
    }
  }

服务:

import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class DemoServiceImpl implements DemoService {

    private ModelMapper modelMapper;

    @Autowired
    public DemoServiceImpl(ModelMapper modelMapper) {
      this.modelMapper = modelMapper;
    }
 }

您可以使用它。

Tis is how we used:

Config file:

import org.modelmapper.ModelMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig {

@Bean
public ModelMapper modelMapper() {
    ModelMapper modelMapper = new ModelMapper();
    modelMapper.addMappings(ModelMapperConfig.userToUserDTO());
    return modelMapper;
  }
}

Config for deep mapping:

import org.modelmapper.PropertyMap;

class ModelMapperConfig {

static PropertyMap<User, UserDTO> userToUserDTO() {
    return new PropertyMap<>() {
        protected void configure() {
            map().setOfficeName(source.getOffice().getOfficeName());
        }
      };
    }
  }

Service:

import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class DemoServiceImpl implements DemoService {

    private ModelMapper modelMapper;

    @Autowired
    public DemoServiceImpl(ModelMapper modelMapper) {
      this.modelMapper = modelMapper;
    }
 }

So you can use it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文