构造函数基础依赖注入不起作用?

问题描述 投票:0回答:1

这是我第一次遇到这个错误

`描述:

com.team.zah.blog.service.Impl.PostServiceImpl 中构造函数的参数 0 需要一个类型为“com.team.zah.blog.repository.PostRepository”的 bean,但无法找到。

行动:

考虑在配置中定义“com.team.zah.blog.repository.PostRepository”类型的 bean。`

我无法理解这里的问题,因为我已经清楚地使用了 lombok 注释:

@AllArgsConstructor
在我的班级

类代码在这里:

package com.team.zah.blog.service.Impl;

import com.team.zah.blog.dto.PostDTO;
import com.team.zah.blog.model.Post;
import com.team.zah.blog.repository.PostRepository;
import com.team.zah.blog.service.PostService;
import lombok.AllArgsConstructor;
import org.modelmapper.ModelMapper;
import org.springframework.stereotype.Service;

@Service
@AllArgsConstructor
public class PostServiceImpl implements PostService {

    private PostRepository postRepository;
    private ModelMapper modelMapper;

    @Override
    public PostDTO create(PostDTO postDTO) {
        Post post = modelMapper.map(postDTO, Post.class);
        Post savedPost = postRepository.save(post);
        return modelMapper.map(savedPost, PostDTO.class);
    }
}

我尝试像这样手动完成

    @Autowired
    public void setPostRepository(PostRepository postRepository) {
        this.postRepository = postRepository;
    }
    
    @Autowired
    public void setModelMapper(ModelMapper modelMapper) {
        this.modelMapper = modelMapper;
    }

但我仍然遇到缺少 bean 的问题。

我想知道这里的问题是什么?

java spring-boot lombok spring-bean
1个回答
0
投票

也许这个错误是因为 lombok 的构造上没有 que 注释 @Autowired。

你为什么要尝试这个:

    @Service
public class PostServiceImpl implements PostService {

    private final PostRepository postRepository;
    private final ModelMapper modelMapper;

    @Autowired
    public PostServiceImpl(PostRepository postRepository, ModelMapper, modelMapper) {
        this.postRepository = postRepository;
        this.modelMapper = modelMapper;
    }
...
}
© www.soinside.com 2019 - 2024. All rights reserved.