Anotácie jarných bôbov
• Jarné webové anotácie
• Jarné anotácie
• Anotácie jarného plánovania
• Jarné anotácie údajov
• Anotácie Spring Bean (aktuálny článok)
1. Prehľad
V tomto článku si povieme najviac spoločné anotácie jarných bôbov používa sa na definovanie rôznych druhov fazule.
Existuje niekoľko spôsobov, ako nakonfigurovať fazuľu v kontajneri Spring. Môžeme ich deklarovať pomocou konfigurácie XML. Fazuľu môžeme deklarovať pomocou @Bean anotácia v konfiguračnej triede.
Alebo môžeme triedu označiť jednou z anotácií z org.springframework.stereotyp balíček a zvyšok nechajte na skenovanie komponentov.
2. Skenovanie komponentov
Jar môže automaticky skenovať balík, či neobsahuje fazule, ak je povolené skenovanie komponentov.
@ComponentScan konfiguruje ktoré balíčky na skenovanie tried s konfiguráciou anotácií. Názvy základných balíkov môžeme určiť priamo pomocou jedného z basePackages alebo hodnotu argumenty (hodnotu je alias pre basePackages):
@Configuration @ComponentScan (basePackages = "com.baeldung.annotations") trieda VehicleFactoryConfig {}
Tiež môžeme ukázať na triedy v základných balíkoch pomocou basePackageClasses argument:
@Configuration @ComponentScan (basePackageClasses = VehicleFactoryConfig.class) trieda VehicleFactoryConfig {}
Oba argumenty sú polia, aby sme každému mohli poskytnúť viac balíkov.
Ak nie je zadaný žiadny argument, skenovanie sa uskutoční z rovnakého balíka, kde je @ComponentScan je prítomná komentovaná trieda.
@ComponentScan využíva funkciu opakujúcich sa anotácií Java 8, čo znamená, že s ňou môžeme triedu označiť viackrát:
@Configuration @ComponentScan (basePackages = "com.baeldung.annotations") @ComponentScan (basePackageClasses = VehicleFactoryConfig.class) trieda VehicleFactoryConfig {}
Prípadne môžeme použiť @ComponentScans určiť viac @ComponentScan konfigurácie:
@Configuration @ComponentScans ({@ComponentScan (basePackages = "com.baeldung.annotations"), @ComponentScan (basePackageClasses = VehicleFactoryConfig.class)}) trieda VehicleFactoryConfig {}
Kedy pomocou konfigurácie XML, konfigurácia skenovania komponentov je rovnako ľahká:
3. @ Komponent
@ Komponent je anotácia na úrovni triedy. Počas skenovania komponentu Spring Framework automaticky detekuje triedy s poznámkami @ Komponent.
Napríklad:
@Trieda komponentov CarUtility {// ...}
Predvolene majú fazuľové inštancie tejto triedy rovnaký názov ako názov triedy s malými začiatočnými písmenami. Okrem toho môžeme pomocou voliteľného príslušenstva určiť iný názov hodnotu argument tejto anotácie.
Odkedy @Úložisko, @Služba, @ Konfiguráciaa @ Kontrolór všetky metaanotácie @ Komponentzdieľajú rovnaké správanie pri pomenovaní fazule. Spring ich tiež automaticky zdvihne počas procesu skenovania komponentov.
4. @Úložisko
Triedy DAO alebo Repository obvykle predstavujú vrstvu prístupu do databázy v aplikácii a mali by byť anotované @Úložisko:
@ Trieda úložiska VehicleRepository {// ...}
Jednou z výhod použitia tejto anotácie je to má povolený automatický preklad výnimiek trvalosti. Pri použití rámca perzistencie, ako je napríklad Hibernate, sú natívne výnimky vyvolané v rámci tried s poznámkami @Úložisko budú automaticky preložené do podtried jarných DataAccessExeption.
Povoliť preklad výnimiek, musíme vyhlásiť svoje vlastné PersistenceExceptionTranslationPostProcessor fazuľa:
@Bean public PersistenceExceptionTranslationPostProcessor exceptionTranslation () {return new PersistenceExceptionTranslationPostProcessor (); }
Upozorňujeme, že vo väčšine prípadov urobí Spring vyššie uvedený krok automaticky.
Alebo prostredníctvom konfigurácie XML:
5. @Služba
The obchodná logika aplikácie sa zvyčajne nachádza vo vrstve služieb - použijeme teda @Služba anotácia označujúca, že trieda patrí do tejto vrstvy:
@Služba verejnej triedy VehicleService {// ...}
6. @ Kontrolór
@ Kontrolór je anotácia na úrovni triedy, ktorá informuje jarný rámec, že táto trieda slúži ako radič na jar MVC:
@Controller verejná trieda VehicleController {// ...}
7. @ Konfigurácia
Konfigurácia triedy môžu obsahujú metódy definície fazule s poznámkou @Bean:
@ Trieda konfigurácie VehicleFactoryConfig {@Bean Engine engine () {return new Engine (); }}
8. Stereotypové anotácie a AOP
Keď používame jarné stereotypné anotácie, je ľahké vytvoriť bodový bod zameraný na všetky triedy, ktoré majú konkrétny stereotyp.
Predpokladajme napríklad, že chceme merať čas vykonávania metód z vrstvy DAO. Vytvoríme nasledujúci aspekt (pomocou anotácií AspectJ), ktorý bude využívať výhody @Úložisko stereotyp:
@Aspect @Component verejná trieda PerformanceAspect {@Pointcut ("within (@ org.springframework.stereotype.Repository *)") public void repositoryClassMethods () {}; @Around ("repositoryClassMethods ()") public Object measureMethodExecutionTime (ProceedingJoinPoint joinPoint) hodí Throwable {long start = System.nanoTime (); Objekt returnValue = joinPoint.proceed (); dlhý koniec = System.nanoTime (); Reťazec methodName = joinPoint.getSignature (). GetName (); System.out.println ("Vykonanie" + methodName + "trvalo" + TimeUnit.NANOSECONDS.toMillis (end - start) + "ms"); návrat returnValue; }}
V tomto príklade sme vytvorili bodový rez, ktorý zodpovedá všetkým metódam v triedach s poznámkami @Úložisko. Použili sme @Okolo radu, aby ste potom zamerali tento bod a určili čas vykonania hovorov zachytených metód.
Pomocou tohto prístupu môžeme do každej aplikačnej vrstvy pridať protokolovanie, správu výkonu, audit alebo iné správanie.
9. Záver
V tomto článku sme preskúmali jarné stereotypné anotácie a dozvedeli sme sa, aký typ sémantiky predstavujú.
Tiež sme sa naučili, ako pomocou skenovania komponentov povedať kontajneru, kde nájsť anotované triedy.
Nakoniec - videli sme, ako tieto anotácie viesť k čistému, vrstvenému dizajnu a oddelenie medzi záujmami žiadosti. Zmenšujú tiež konfiguráciu, pretože už nemusíme explicitne definovať fazuľa ručne.
Ako obvykle sú príklady k dispozícii na GitHub.
« Predchádzajúce jarné anotácie údajov