मेरे पास एक JHipster माइक्रोसर्विस एप्लिकेशन है, और मैंने एक स्प्रिंग कंट्रोलर जोड़ा है। हालांकि, यह एक भंडार के बिना उत्पन्न होता है और मुझे नहीं पता कि डेटा कार्यों को करने के लिए इसे कैसे पुनर्प्राप्त किया जाए।

यह कोड है:

@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);
    }

}

संपादित करें: मुझे पहले से मौजूद भंडार को इंजेक्ट करने की आवश्यकता है, यहां सीआरयूडी भाग है जहां भंडार प्रारंभ किया गया है:

@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 {
...

0
Centroricerche rps 27 अप्रैल 2020, 18:12

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);
    }

}
2
mr.sanatbek 27 अप्रैल 2020, 21:07