Látszólag implementálatlan interfész változó @Autowired értékadása milyen implementációval történik

0 értékelés
138 megtekintés
brthzltn (4 pont) kérdezte Már 15.

Sziasztok!

Új vagy még a témában (és sztem leszek is életem végéig :) ). Azt szeretném megkérdezni, hogy a Spring I tanfolyamon, adott ugye a StoryRepository mint interface (örököltetve a CrudRepository interface-ből):

    public interface StoryRepository extends CrudRepository<Story, Long>

A használata: 

     private StoryRepository storyRepo;
    @Autowired
     public void setStoryRepo(StoryRepository storyRepo) {
          this.storyRepo = storyRepo;
    }

A kérdésem az lenne, hogy milyen implementációt fog a storyRepo változóba betölteni?

Ugye a StoryRepository egy interface, azt nem tudja példányosítani, mi nem írtunk hozzá implementációt,

talán a CrudRepository-nak van egy szörnyű okos, spring mélyén elbújó implementációja ?

Honnan tudja (és ki tudja), hogy a findByTitle() metódusnak hogyan kell működnie?

Előre is köszi a választ és bocs, ha valamit elnéztem és azért nem értem.

1 Válasz

0 értékelés
g13t4 Haladó Felhasználó (235 pont) válaszolta meg Már 30.
Krisz kiválasztva Máj 8.
 
Legjobb válasz

Szia,

vagy két hete próbálom dekódolni a kérdésedet :)

Ha jól értem, nem találod a findByTitle() metódust, aminek a működését szeretnéd látni.

Én a következőképpen értelmezem, de ez nem azt jelenti, hogy igazam van!

A Crud kap (többek között) egy típust, ami a példa esetében nem primitív, hanem egy objektum.

A Crud-nak van egy

Optional<T> findById(ID id)

metódusa, ami ami alap esetben visszaad igazat vagy hamisat annak megfelelően, hogy létezik-e Entity az adott azonosítóval (jelen esetben Title). Mivel az egész osztály Entity, így a Title létezik és nem dob kivételt a metódus.

A findById-nek lehet opcionálisan Crud-ban megadott típus visszatérési értéke. Nálunk ez a Story

Ami zavaró lehet, hogy az id helyett használható bármi:

 findByGyula(String gyula);

findByTitle(String title);

a lényeg, hogy legyen ilyen azonosítójú Entity.

...