Tavaszi babjegyzetek
• Tavaszi internetes kommentárok
• Tavaszi indítójegyzetek
• Tavaszi ütemezési kommentárok
• Tavaszi adatjegyzetek
• Tavaszi bab kommentárok (aktuális cikk)
1. Áttekintés
Ebben a cikkben a legtöbbet tárgyaljuk gyakori tavaszi babjegyzetek különböző típusú bab meghatározására szolgál.
Többféle módon konfigurálható a bab egy tavaszi tartályban. XML konfigurációval deklarálhatjuk őket. A babot a @Bab annotáció egy konfigurációs osztályban.
Vagy megjelölhetjük az osztályt a org.springframework.stereotype csomagot, és a többit hagyja az alkatrészek vizsgálatára.
2. Komponens szkennelés
A Spring automatikusan átkutathatja a csomagot babkonfiguráció esetén, ha az alkatrész szkennelés engedélyezett.
@ComponentScan melyiket konfigurálja csomagok az osztályok felkutatásához annotáció konfigurációval. Az alapcsomag neveket közvetlenül megadhatjuk az egyik basePackages vagy érték érvek (érték egy alias a basePackages):
@Configuration @ComponentScan (basePackages = "com.baeldung.annotations") class VehicleFactoryConfig {}
Emellett az alapcsomagokban lévő osztályokra is mutathatunk a basePackageClasses érv:
@Configuration @ComponentScan (basePackageClasses = VehicleFactoryConfig.class) osztály VehicleFactoryConfig {}
Mindkét argumentum tömb, így mindegyikhez több csomagot tudunk biztosítani.
Ha nincs megadva argumentum, akkor a keresés ugyanabból a csomagból történik, ahová a @ComponentScan kommentált osztály van jelen.
@ComponentScan kihasználja a Java 8 ismétlődő kommentárok funkcióját, ami azt jelenti, hogy többször is megjelölhetünk vele egy osztályt:
@Configuration @ComponentScan (basePackages = "com.baeldung.annotations") @ComponentScan (basePackageClasses = VehicleFactoryConfig.class) osztály VehicleFactoryConfig {}
Alternatív megoldásként használhatjuk @ComponentScans többszörös megadásához @ComponentScan konfigurációk:
@Configuration @ComponentScans ({@ComponentScan (basePackages = "com.baeldung.annotations"), @ComponentScan (basePackageClasses = VehicleFactoryConfig.class)}) osztály VehicleFactoryConfig {}
Mikor XML konfigurációval, az összetevők szkennelésének konfigurálása ugyanolyan egyszerű:
3. @Összetevő
@Összetevő osztály szintű kommentár. Az alkatrész-vizsgálat során A Spring Framework automatikusan észleli a jelöléssel ellátott osztályokat @Összetevő.
Például:
@Component osztály CarUtility {// ...}
Alapértelmezés szerint ennek az osztálynak a babpéldányainak neve megegyezik az osztály nevével kisbetűs kezdőbetűvel. Ezen felül megadhatunk egy másik nevet az opcionális használatával érték érvelése ennek az annotációnak.
Mivel @Raktár, @Szolgáltatás, @ Konfiguráció, és @Vezérlő mind a meta-annotációk @Összetevő, ugyanaz a babnév-viselkedésük van. Ezenkívül Spring automatikusan felveszi őket az alkatrész-szkennelési folyamat során.
4. @Raktár
A DAO vagy a Repository osztályok általában az adatbázis hozzáférési réteget képviselik egy alkalmazásban, és azokat meg kell jegyezni @Raktár:
@Repository osztály VehicleRepository {// ...}
Ennek az annotációnak az egyik előnye az engedélyezte az automatikus perzisztencia kivétel fordítását. Ha olyan perzisztencia keretrendszert használ, mint a hibernálás, akkor az osztályokba dobott natív kivételek a következőkkel vannak kiegészítve @Raktár automatikusan lefordítják a Spring's alosztályaiba DataAccessExeption.
A kivétel fordításának engedélyezése, ki kell nyilvánítanunk a magunkét PersistenceExceptionTranslationPostProcessor bab:
@Bean public PersistenceExceptionTranslationPostProcessor kivételTranslation () {return new PersistenceExceptionTranslationPostProcessor (); }
Ne feledje, hogy a legtöbb esetben a Spring automatikusan elvégzi a fenti lépést.
Vagy XML konfigurációval:
5. @Szolgáltatás
A üzleti logika egy alkalmazás általában a szolgáltatási rétegen belül található - ezért a @Szolgáltatás kommentár, amely jelzi, hogy egy osztály az adott réteghez tartozik:
@Service public class VehicleService {// ...}
6. @Vezérlő
@Vezérlő egy osztály szintű kommentár, amely elmondja a Spring Framework-nek, hogy ez az osztály a vezérlő a tavaszi MVC-ben:
@Controller public class VehicleController {// ...}
7. @ Konfiguráció
Konfiguráció osztályok tudnak tartalmazzák a babdefiníciós módszereket jelöléssel @Bab:
@Configuration class VehicleFactoryConfig {@Bean Engine engine () {return new Engine (); }}
8. Sztereotípiás kommentárok és AOP
Amikor a Spring sztereotípiás kommentárokat használjuk, könnyen létrehozhatunk egy olyan pontvágányt, amely az összes olyan osztályt megcélozza, amelyek rendelkeznek egy adott sztereotípiával.
Tegyük fel például, hogy a módszerek végrehajtási idejét a DAO rétegből szeretnénk mérni. A következő szempontot hozzuk létre (az AspectJ kommentárokkal), kihasználva @Raktár sztereotípia:
@Aspect @Component public class PerformanceAspect {@Pointcut ("within (@ org.springframework.stereotype.Repository *)") public void repositoryClassMethods () {}; @Around ("repositoryClassMethods ()") public Object measureMethodExecutionTime (ProceedingJoinPoint joinPoint) dobja Throwable {long start = System.nanoTime (); Object returnValue = joinPoint.proceed (); hosszú vég = System.nanoTime (); String methodName = joinPoint.getSignature (). GetName (); System.out.println ("A" + methodName + "végrehajtása" + "TimeUnit.NANOSECONDS.toMillis (end - start) +" ms "); return returnValue; }}
Ebben a példában hoztunk létre egy pontvágást, amely megfelel az összes metódusnak az osztályokkal, amelyekhez annotáltunk @Raktár. Használtuk a @Körül tanács, hogy ezután célozza meg ezt a pontot, és határozza meg az elfogott metódushívások végrehajtási idejét.
Ennek a megközelítésnek a segítségével naplózást, teljesítménykezelést, auditot vagy más viselkedést adhatunk az egyes alkalmazásrétegekhez.
9. Következtetés
Ebben a cikkben megvizsgáltuk a Spring sztereotípia annotációit, és megtudtuk, hogy ezek milyen típusú szemantikát képviselnek.
Megtanultuk azt is, hogyan kell az összetevő-szkennelést megmondani a konténernek, hol találja a jegyzetelt osztályokat.
Végül - láttuk, hogy ezek az annotációk tiszta, réteges kialakításhoz vezet valamint az alkalmazás aggályainak elkülönítése. Kisebbé teszik a konfigurációt is, mivel már nem kell kifejezetten kézzel meghatároznunk a babot.
Szokás szerint a példák elérhetők a GitHub oldalon.
« Korábbi tavaszi adatjegyzetek