简体   繁体   English

考虑使用我的服务在您的配置中定义一个类型的 bean

[英]Consider defining a bean of type in your configuration with my Service

I have this situation with my code even after I added the @Component, @Service and @Repository annotation to my classes:即使在我将@Component、@Service 和@Repository 注释添加到我的类之后,我的代码也会出现这种情况:

this is the resource for it:这是它的资源:

package app.gym.v1.Resource.API;

import app.gym.v1.Model.Domain.Gym;
import app.gym.v1.Service.GymService;
import app.gym.v1.Utility.Constant.SwaggerConstant;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

import static org.springframework.http.HttpStatus.OK;

@RestController
@RequestMapping(path = "/gym")
@Api(tags = {SwaggerConstant.API_TAG3})
public class GymControl {
    private GymService gymService;

    @Autowired
    public GymControl(GymService gymService) {
        this.gymService = gymService;
    }

    @ApiOperation(value = "Get all available gyms", notes = "Retrieve a list of all gyms")
    @ApiResponses({@ApiResponse(responseCode = "200", description = "The list of gyms retrieved"),
            @ApiResponse(responseCode = "400", description = "The request is malformed or invalid"),
            @ApiResponse(responseCode = "404", description = "The resource URL was not found on the server"),
            @ApiResponse(responseCode = "500", description = "An internal server error occurred"),
            @ApiResponse(responseCode = "403", description = "You are not authorized. Please authenticate and try again"),
            @ApiResponse(responseCode = "401", description = "You don't have permission to this resource")
    })
    @GetMapping("/list_gym")
    public ResponseEntity<List<Gym>> getAllGyms() {
        List<Gym> gyms = gymService.getGyms();
        return new ResponseEntity<>(gyms, OK);
    }

    @ApiOperation(value = "Finding gym from list", notes = "Retrieve a gym from the search engine")
    @ApiResponses({@ApiResponse(responseCode = "200", description = "The gym was found"),
            @ApiResponse(responseCode = "400", description = "The request is malformed or invalid"),
            @ApiResponse(responseCode = "404", description = "The resource URL was not found on the server"),
            @ApiResponse(responseCode = "500", description = "An internal server error occurred"),
            @ApiResponse(responseCode = "403", description = "You are not authorized. Please authenticate and try again"),
            @ApiResponse(responseCode = "401", description = "You don't have permission to this resource")
    })
    @GetMapping("/find/{gymName}")
    public ResponseEntity<Gym> getGym(@PathVariable("gymName") String gymName) {
        Gym gym = gymService.findGymByGymName(gymName);
        return new ResponseEntity<>(gym, OK);
    }

}

and this is the repository for it:这是它的存储库:

package app.gym.v1.Repo;

import app.gym.v1.Model.Domain.Gym;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface GymRepo extends JpaRepository<Gym, Long> {

    Gym findByGymName(String gymName);
}

finally this is the service for it:最后这是它的服务:

package app.gym.v1.Service;

import app.gym.v1.Model.Domain.Gym;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public interface GymService {

    List<Gym> getGyms();

    Gym findGymByGymName(String gymName);
}

as you see I add all the required annotations but the same bug appear to me and keep giving me the same answer in the debugger:如您所见,我添加了所有必需的注释,但出现了相同的错误,并在调试器中不断给我相同的答案:


APPLICATION FAILED TO START应用程序无法启动


Description:描述:

Parameter 0 of constructor in app.gym.v1.Resource.API.GymControl required a bean of type 'app.gym.v1.Service.GymService' that could not be found. app.gym.v1.Resource.API.GymControl 中构造函数的参数 0 需要找不到类型为“app.gym.v1.Service.GymService”的 bean。

Action:行动:

Consider defining a bean of type 'app.gym.v1.Service.GymService' in your configuration.考虑在你的配置中定义一个“app.gym.v1.Service.GymService”类型的bean。

Process finished with exit code 0进程以退出代码 0 结束

*** I searched a lot about it and try every single answer here in StackOverFlow and every single answer in GitHub and reply a lot of books but everything like stop. *** 我搜索了很多关于它的内容,并在 StackOverFlow 中尝试了每一个答案,在 GitHub 中尝试了每一个答案,并回复了很多书,但一切都像停止。

Where should @Service annotation be kept? @Service 注释应该保存在哪里? Interface or Implementation? 接口还是实现? you must check this.Basically you need to implement GymService interface and then only it will work try like this.你必须检查这个。基本上你需要实现GymService接口,然后只有它才能像这样尝试。

@Service
public class GymServiceImpl  implements GymService{
    
    @Autowired
    GymRepo gymRepo

    @Override
    public List<Gym> getGyms() {
        // TODO Auto-generated method stub
        return gymRepo.findAll();
    }

    @Override
    public Gym findGymByGymName(String gymName) {
        // TODO Auto-generated method stub
        return gymRepo.findByGymName(gymName);
    }

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM