首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >考虑在配置中定义'org.modelmapper.ModelMapper‘类型的bean

考虑在配置中定义'org.modelmapper.ModelMapper‘类型的bean
EN

Stack Overflow用户
提问于 2022-11-11 16:10:13
回答 2查看 68关注 0票数 0

应用程序启动失败

Kodlama.io.Devs.business.concretes.ProgrammingLanguageManager中构造函数的参数1需要一个无法找到的'org.modelmapper.ModelMapper‘类型的bean。

考虑在您的配置中定义'org.modelmapper.ModelMapper‘类型的bean。

ProgrammingLanguageManager

代码语言:javascript
复制
@Service
public class ProgrammingLanguageManager implements ProgrammingLanguageService {

    @Autowired
    private ProgrammingLanguageRepository programmingLanguageRepository;
    private ModelMapper modelMapper;

    @Autowired
    public ProgrammingLanguageManager(ProgrammingLanguageRepository programmingLanguageRepository,
            ModelMapper modelMapper) {
        this.programmingLanguageRepository = programmingLanguageRepository;
        this.modelMapper = modelMapper;

    }

    // * * * CRUD OPERATIONS * * *

    @Override
    public CreateProgrammingLanguageResponse add(CreateProgrammingLanguageRequest createProgrammingLanguageRequest)
            throws Exception {
        nameCannotBeSame(createProgrammingLanguageRequest.getName());

        ProgrammingLanguage programmingLanguage = modelMapper.map(createProgrammingLanguageRequest,
                ProgrammingLanguage.class);
        ProgrammingLanguage saveProgrammingLanguageResult = programmingLanguageRepository.save(programmingLanguage);

        CreateProgrammingLanguageResponse createProgrammingLanguageResponse = modelMapper
                .map(saveProgrammingLanguageResult, CreateProgrammingLanguageResponse.class);

        return createProgrammingLanguageResponse;
    }

    @Override
    public UpdateProgrammingLanguageResponse update(UpdateProgrammingLanguageRequest updateProgrammingLanguageRequest)
            throws Exception {
        nameCannotBeSame(updateProgrammingLanguageRequest.getName());

        ProgrammingLanguage programmingLanguage = modelMapper.map(updateProgrammingLanguageRequest,
                ProgrammingLanguage.class);
        ProgrammingLanguage saveProgrammingLanguageResult = programmingLanguageRepository.save(programmingLanguage);

        UpdateProgrammingLanguageResponse updateProgrammingLanguageResponse = modelMapper
                .map(saveProgrammingLanguageResult, UpdateProgrammingLanguageResponse.class);

        return updateProgrammingLanguageResponse;
    }

    @Override
    public DeleteProgrammingLanguageResponse delete(DeleteProgrammingLanguageRequest deleteProgrammingLanguageRequest) {

        ProgrammingLanguage getReferenceByIdProgrammingLanguageResult = programmingLanguageRepository
                .getReferenceById(deleteProgrammingLanguageRequest.getId());
        programmingLanguageRepository.delete(getReferenceByIdProgrammingLanguageResult);

        DeleteProgrammingLanguageResponse deleteProgrammingLanguageResponse = modelMapper
                .map(getReferenceByIdProgrammingLanguageResult, DeleteProgrammingLanguageResponse.class);

        return deleteProgrammingLanguageResponse;
    }

    // * * * GET METHODS * * *

    @Override
    public List<GetAllProgrammingLanguagesResponse> getAll() {

        List<ProgrammingLanguage> findAllProgrammingLanguageResult = programmingLanguageRepository.findAll();

        return modelMapper.map(findAllProgrammingLanguageResult,
                new TypeToken<List<GetAllProgrammingLanguagesResponse>>() {
                }.getType());
    }

    @Override
    public GetByIdProgrammingLanguageResponse getById(
            GetByIdProgrammingLanguageRequest getByIdProgrammingLanguageRequest) {

        ProgrammingLanguage getReferenceByIdProgrammingLanguageResult = programmingLanguageRepository
                .getReferenceById(getByIdProgrammingLanguageRequest.getId());

        GetByIdProgrammingLanguageResponse getByIdProgrammingLanguageResponse = modelMapper
                .map(getReferenceByIdProgrammingLanguageResult, GetByIdProgrammingLanguageResponse.class);

        return getByIdProgrammingLanguageResponse;
    }

    public GetByNameProgrammingLanguageResponse getByName(
            GetByNameProgrammingLanguageRequest getByNameProgrammingLanguageRequest) {

        ProgrammingLanguage getReferenceByNameProgrammingLanguageResult = new ProgrammingLanguage();
        getReferenceByNameProgrammingLanguageResult = programmingLanguageRepository
                .getByName(getByNameProgrammingLanguageRequest.toString());

        GetByNameProgrammingLanguageResponse getByNameProgrammingLanguageResponse = modelMapper
                .map(getReferenceByNameProgrammingLanguageResult, GetByNameProgrammingLanguageResponse.class);

        return getByNameProgrammingLanguageResponse;
    }

    // * * * BUSINESS RULES * * *

    private void nameCannotBeSame(String name) throws Exception {

        ProgrammingLanguage programmingLanguage = programmingLanguageRepository.getByName(name);

        var result = programmingLanguage;

        if (result != null) {
            throw new Exception(Messages.NAME_ALREADY_EXISTS);
        }
    }
}

我错过了什么,但我不知道

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-11 16:37:03

您的ModelMapper类没有注册为spring,它只是一个普通的java类。为了解决这个问题,您需要创建一个@Configuration类,如果您想自动使用它,它将定义bean。

代码语言:javascript
复制
@Configuration
public class AppConfiguration {
    @Bean
    public ModelMapper modelMapper() {
        return new ModelMapper();
    }
} 

否则,您无法启动依赖项注入,您必须使用new ModelMapper();自己创建该对象。

另一个技巧是避免使用@Autowire对字段进行注释。构造函数级注释就足够了。

票数 0
EN

Stack Overflow用户

发布于 2022-11-11 16:36:40

从错误消息中可以清楚地看到,bean of type 'org.modelmapper.ModelMapper'丢失了。因此,请将以下bean添加到项目中,然后再试一次。

代码语言:javascript
复制
@Bean
public ModelMapper modelMapper() {
    return new ModelMapper();
}

注意:在带有@Configuration__注释的类中添加了这个bean。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74405271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档