Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Spring Boot] Problemi con upload di file e service

    ciao!

    sul mio progetto di test Spring Boot, vorrei aggiungere la possibilità di upload di un file.
    ho seguito un tutorial, ma l'applicazione non si avvia:
    codice:
    Parameter 0 of constructor in com.mp.springtest.controller.StorageController required a bean of type 'com.mp.springtest.service.StorageService' that could not be found.
    questo il controller:
    codice:
    package com.mp.springtest.controller;
    
    @RestController
    public class StorageController {
    
        private final StorageService storageService;
    
        @Autowired
        public StorageController(StorageService storageService) {
            this.storageService = storageService;
        }
    
        @PostMapping("/upload")
        public void handleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) {
            storageService.store(file);
            redirectAttributes.addFlashAttribute("message", "File caricato con successo: " + file.getOriginalFilename());
        }
    
    }
    e questo lo storageservice:
    codice:
    package com.mp.springtest.service;
    
    import org.springframework.web.multipart.MultipartFile;
    
    public interface StorageService {
    
        void init();
    
        void store(MultipartFile file);
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da fermat Visualizza il messaggio
    required a bean of type 'com.mp.springtest.service.StorageService' that could not be found.

    codice:
    package com.mp.springtest.service;
    
    import org.springframework.web.multipart.MultipartFile;
    
    public interface StorageService {
    
        void init();
    
        void store(MultipartFile file);
    }
    Se vuoi "astrarre" i service mettendo in mezzo una interfaccia, va bene, specialmente nell'ottica di unit-testing. Ma poi ovviamente ci vuole una implementazione che abbia @Service altrimenti come dice l'errore "a bean of type '***' that could not be found"
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ciao andbin!

    ok ma non ho ben capito sinceramente.

    nel controller ho fatto questo:
    codice:
    import com.mp.springtest.service.StorageService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.multipart.MultipartFile;
    import org.springframework.web.servlet.mvc.support.RedirectAttributes;
    
    @RestController
    public class StorageController {
    
        private final StorageService storageService;
    
        @Autowired
        public StorageController(StorageService storageService) {
            this.storageService = storageService;
        }
    
        @PostMapping("/upload")
        public void handleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) {
            storageService.store(file);
            redirectAttributes.addFlashAttribute("message", "File caricato con successo: " + file.getOriginalFilename());
        }
    
    }
    ma non ho ben capito cosa mi manca!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da fermat Visualizza il messaggio
    ma non ho ben capito cosa mi manca!
    Hai fatto una interfaccia StorageService e questo va bene, in senso generale, per fornire un livello di astrazione del service. Ma la interfaccia da sola non basta! Ci vuole ovviamente una implementazione e che sia poi ovviamente "presa" da Spring come bean.
    codice:
    @Service
    public class StorageServiceImpl implements StorageService {
       .....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Hai fatto una interfaccia StorageService e questo va bene, in senso generale, per fornire un livello di astrazione del service. Ma la interfaccia da sola non basta! Ci vuole ovviamente una implementazione e che sia poi ovviamente "presa" da Spring come bean.
    codice:
    @Service
    public class StorageServiceImpl implements StorageService {
       .....
    perfetto grazie mille!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.