Как получить репозиторий из контроллера Spring JHipster?

У меня есть приложение микросервиса JHipster, и я добавил контроллер Spring. Однако он генерируется без репозитория, и я не знаю, как его получить для выполнения задач с данными.

Это код:

@RestController
@RequestMapping("/api/data")
public class DataResource {

    private final Logger log = LoggerFactory.getLogger(DataResource.class);
    private final DeviceRepository deviceRepository;

    public DataResource() {
    }

    /**
    * GET global
    */
    @GetMapping("/global")
    public ResponseEntity<GlobalStatusDTO[]> global() {

        List<Device> list=deviceRepository.findAll();
        GlobalStatusDTO data[]=new GlobalStatusDTO[]{new GlobalStatusDTO(list.size(),1,1,1,1)};
        return ResponseEntity.ok(data);
    }

}

РЕДАКТИРОВАТЬ: мне нужно внедрить уже существующий репозиторий, вот часть CRUD, где инициализируется репозиторий:

@RestController
@RequestMapping("/api")
@Transactional
public class DeviceResource {

    private final Logger log = LoggerFactory.getLogger(DeviceResource.class);

    private static final String ENTITY_NAME = "powerbackDevice";

    @Value("${jhipster.clientApp.name}")
    private String applicationName;

    private final DeviceRepository deviceRepository;

    public DeviceResource(DeviceRepository deviceRepository) {
        this.deviceRepository = deviceRepository;
    }

    /**
     * {@code POST  /devices} : Create a new device.
     *
     * @param device the device to create.
     * @return the {@link ResponseEntity} with status {@code 201 (Created)} and with body the new device, or with status {@code 400 (Bad Request)} if the device has already an ID.
     * @throws URISyntaxException if the Location URI syntax is incorrect.
     */
    @PostMapping("/devices")
    public ResponseEntity<Device> createDevice(@Valid @RequestBody Device device) throws URISyntaxException {
...


person Centroricerche rps    schedule 27.04.2020    source источник
comment
Не могли бы вы уточнить вопрос? Вы имели в виду, что у вас нет DeviceRepository? Или, если вы хотите включить (внедрить) DeviceRepository в свой DeviceResource, вы можете включить его в свой конструктор или использовать метод @inject   -  person mr.sanatbek    schedule 27.04.2020


Ответы (1)


Я могу вас неправильно понять, но ваша первая часть кода не работает, потому что вы не внедрили DeviceRepository конструктором. Конечно, есть и другие способы инъекций.

@RestController
@RequestMapping("/api/data")
public class DataResource {

    private final Logger log = LoggerFactory.getLogger(DataResource.class);
    private final DeviceRepository deviceRepository;

    //changes are here only, constructor method of injection
    public DataResource(DeviceRepository deviceRepository) {
      this.deviceRepository = deviceRepository; 
    }

    /**
    * GET global
    */
    @GetMapping("/global")
    public ResponseEntity<GlobalStatusDTO[]> global() {

        List<Device> list=deviceRepository.findAll();
        GlobalStatusDTO data[]=new GlobalStatusDTO[]{new GlobalStatusDTO(list.size(),1,1,1,1)};
        return ResponseEntity.ok(data);
    }

}
person mr.sanatbek    schedule 27.04.2020
comment
Вот оно! Я запутался, потому что у сгенерированного теста был другой конструктор, и его также нужно было обновить. - person Centroricerche rps; 28.04.2020