Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412

    [SPRING] Domanda sulla Dependecy Injection e come cambia la steuttura delle classi

    Sto seguendo la guida di questa pagina
    http://www.html.it/pag/18720/configu...ioc-di-spring/

    però non mi è chiara una cosa: ReportGenerator ha una dipendenza con la classe TxtReport, che viene esplicitamente dichiarata come proprietà
    Codice PHP:
    public class ReportGenerator {
      
    Report report;   
    ...

    nonchè un setter atto a riempire tale proprietà
    Codice PHP:
     public void setReport (Report report) {    this.report report;  } 
    Dopo viene proposto un esempio su come ottenere tale risultato tramite la semplice configurazione di un file XML utilizzato da Spring..

    Tuttavia non viene specificata una cosa! Nel momento in cui configuro tale file, vuol dire che non si rende più necessario dichiarare proprietà e setter all'interno di ReportGenerator? Fa tutto in automatico Spring?
    Detto in altre parole, DOPO aver configurato l'XML, le due classi avranno questa forma?


    Codice PHP:
    // Classe TxtReport
    public class TxtReport implements Report 

      
    String path;
       
      public 
    TxtReport(String path) { this.path path; }
       
      public 
    void generate(String data) {    
         
    System.out.println("genera txt report"); 
     }
         
         public 
    void saveToFile() {    
           
    System.out.println("File salvato"); 
        } 



    // Classe ReportGeneratorpublic 
    class ReportGenerator {      
       
    //tolta dichiarazione Report report;   

      
    public Report generate(String data) {    
        
    report.generate(data);    
        return 
    report;  
      }

      
    //tolto setReport



    Ultima modifica di American; 03-07-2014 a 18:46

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da American Visualizza il messaggio
    Nel momento in cui configuro tale file, vuol dire che non si rende più necessario dichiarare proprietà e setter all'interno di ReportGenerator? Fa tutto in automatico Spring?
    No. Se ReportGenerator ha bisogno, per il suo lavoro, di un campo di istanza di tipo Report (e poi quindi di un oggetto che è-un Report), con la Dependency Injection questo non cambia ... ReportGenerator continuerà ad avere quel campo (e il setter).

    Senza DI, ReportGenerator potrebbe anche, in teoria, istanziare lui un oggetto di tipo XyzReport e assegnarlo al suo campo. Il concetto della DI invece è che ReportGenerator non deve istanziare lui gli oggetti da cui dipende che compongono il suo "stato" ma è qualcun'altro (chi gestisce e applica la DI, ovvero Spring in questo caso) ad istanziare e assegnare le dipendenze.
    Ultima modifica di andbin; 03-07-2014 a 20:36
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    Ma allora non c'è un reale vantaggio a livello di scrittura del codice. L'unico vantaggio diciamo che potrebbe essere la riusabilità e manutenibilità nel senso che a parità di tipologia di oggetto da istanziare (mettiamo ad esempio che tengo due classi TxtReport e HtmlReport che implementano entrambe l'interfaccia Report) , posso scegliere quale dei due utilizzare all'interno dell'xml.

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.