Hirdetés

Keresés

Új hozzászólás Aktív témák

  • floatr
    veterán

    Ez megoldva, de nekem ez az egesz szarnak tunik.

    Ha van egy osztalyom, ami egy @Component, akkor ha abbol leszarmazik egy masik osztaly, akkor az ososztalyba nem injektal a Spring Boot anelkul, hogy kulon a leszarmazott osztalynal megmondanam @ComponentScan-nel, hogy az ososztalyt is vegye bele a komponensek listajaba?

    :(

    Nagyon egyszerű a válasz: a @Component annotáció nem örökölhető, ellentétben a @Transactional-lel. Ha azt akarod h a leszármazott osztályod is a kontextusba kerüljön, akkor annak is meg kell adni az annotációt.

    Ennek az az egyszerű oka, hogy a komponensek nem kerülhetnek be "véletlenül" a konténerbe, vagy csinálhatsz absztrakt osztályokat, amibe beletörne a CGLib bicskája

    Bár lehet h félreértem a problémádat. Ha másra gondoltál, akkor szólj. :)

  • F1rstK1nq
    aktív tag

    Ez megoldva, de nekem ez az egesz szarnak tunik.

    Ha van egy osztalyom, ami egy @Component, akkor ha abbol leszarmazik egy masik osztaly, akkor az ososztalyba nem injektal a Spring Boot anelkul, hogy kulon a leszarmazott osztalynal megmondanam @ComponentScan-nel, hogy az ososztalyt is vegye bele a komponensek listajaba?

    :(

    Ez nem szar, így van kitalálva Springben. Amit megjelölsz @Component annotációval (vagy valamelyik stereotype-jával) az az osztályod lesz Component és működnek rajta a spring specifikus dolgok (pl: Autowired). Ez természetesen a Spring álltal ajánlott implicit mód (Implicit bean discovery and automatic wiring). Lehet expliciten is @Bean annotációval Javaconfig-ból, meg xml config-ból is, de most kicsit elkalandoztam.

    Amit te keresel, erre van egy jó kis "best practice" Springben: Csinálj egy üres marker interface-t abba a csomagodba ahol scannelni szeretnél és akkor arra az interfacere hivatkozz a ComponentScan-nél.
    pl.: @Configuration
    @ComponentScan(basePackageClasses = Application.class)
    class ApplicationConfig {}

    marker interface:
    public interface Application {}

Új hozzászólás Aktív témák