Különbség a @ComponentScan és az @EnableAutoConfiguration között a tavaszi rendszerindításban
1. Bemutatkozás
Ebben a gyors bemutatóban megismerhetjük a különbségeket @ComponentScan és @EnableAutoConfiguration jegyzetek a tavaszi keretben.
2. Tavaszi kommentárok
A kommentárokkal könnyebben konfigurálható a függőségi befecskendezés tavasszal. XML konfigurációs fájlok helyett Spring Bean feljegyzéseket használhatunk az osztályokon és módszereken a bab meghatározásához. Ezt követően a tavaszi IoC tároló konfigurálja és kezeli a babot.
Íme egy áttekintés a kommentárokról, amelyeket ebben a cikkben fogunk megvitatni:
- @ComponentScan bejegyzésekkel ellátott tavaszi alkatrészeket keres
- @EnableAutoConfiguration az automatikus konfigurálás engedélyezésére szolgál
Vizsgáljuk meg most a két feljegyzés közötti különbséget.
3. Hogyan különböznek egymástól
A fő különbség ezek között az annotációk között az @ComponentScan miközben rugós alkatrészeket keres @EnableAutoConfiguration az osztálypályán lévő babok automatikus konfigurálására szolgál a Spring Boot alkalmazásokban.
Most nézzük át őket részletesebben.
3.1. @ComponentScan
Egy alkalmazás fejlesztése közben el kell mondanunk a tavaszi keretrendszernek, hogy keresse meg a tavasz által kezelt összetevőket. @ComponentScan lehetővé teszi a Spring számára, hogy átkutassa a konfigurációkat, a vezérlőket, a szolgáltatásokat és az általunk definiált egyéb összetevőket.
Különösen a @ComponentScanannotációt használunk @ Konfiguráció kommentár a Spring csomagjának megadásához az összetevők kereséséhez:
@Configuration @ComponentScan public class EmployeeApplication {public static void main (String [] args) {ApplicationContext context = SpringApplication.run (EmployeeApplication.class, args); // ...}}
Alternatív megoldásként a Spring a megadott csomagból is be tudja kezdeni a szkennelést, amelynek segítségével definiálhatjuk basePackageClasses () vagy basePackages (). Ha nincs megadva csomag, akkor az osztály csomagját veszi figyelembe @ComponentScan kezdő csomagként kommentár:
com.baeldung.annotations.componentscanautoconfigure csomag; // ... @Configuration @ComponentScan (basePackages = {"com.baeldung.annotations.componentscanautoconfigure.healthcare", "com.baeldung.annotations.componentscanautoconfigure.employee"}, basePackageClasses = Teacher.classplication) public class Employment void main (String [] args) {ApplicationContext context = SpringApplication.run (EmployeeApplication.class, args); // ...}}
A példában Spring beolvassa a egészségügyi ellátás és munkavállaló csomagok és a Tanár osztály az alkatrészekre.
A Spring a megadott csomagokkal, az összes alcsomagjával együtt keresi azokat a osztályokat, amelyekkel jegyzetelt @ Konfiguráció. Továbbá, a Konfiguráció osztályok tartalmazhatnak @Bab annotációk, amelyek a módszereket babként regisztrálják a tavaszi alkalmazás kontextusában. Ezt követően a @ComponentScan az annotáció automatikusan felismeri az ilyen babokat:
@Configuration public class Hospital {@Bean public Doctor getDoctor () {return new Doctor (); }}
Továbbá a @ComponentScan az annotáció a babot is beolvashatja, észlelheti és regisztrálja a (z) -nel jegyzett osztályok számára @Component, @Controller, @Service, és @Raktár.
Például létrehozhatunk egy Munkavállaló osztály mint összetevő, amelyet a @ szkennelhetComponentScan kommentár:
@Komponens ("alkalmazott") nyilvános osztály Munkavállaló {// ...}
3.2. @EnableAutoConfiguration
A @EnableAutoConfiguration az annotáció lehetővé teszi a Spring Boot számára az alkalmazás kontextusának automatikus konfigurálását. Ezért automatikusan létrehozza és regisztrálja a babot az osztályútvonalon található jar fájlok és az általunk definiált bab alapján.
Például, amikor meghatározzuk a tavasz-boot-starter-web osztályfüggetlenségünktől függően a Spring boot automatikusan konfigurálja a Tomcat-ot és a Spring MVC-t. Ennek az automatikus konfigurációnak azonban kisebb az elsőbbsége abban az esetben, ha saját konfigurációkat határozunk meg.
Az osztály csomagja, amely deklarálja a @EnableAutoConfiguration az annotáció az alapértelmezett. Ezért mindig alkalmaznunk kell a @EnableAutoConfiguration annotáció a root csomagban, így minden alcsomag és osztály megvizsgálható:
@Configuration @EnableAutoConfiguration public class EmployeeApplication {public static void main (String [] args) {ApplicationContext context = SpringApplication.run (EmployeeApplication.class, args); // ...}}
Továbbá a @EnableAutoConfiguration az annotáció két paramétert tartalmaz a paraméterek manuális kizárásához:
Tudjuk használni kizárni azon osztályok listájának letiltásához, amelyeket nem szeretnénk automatikusan konfigurálni:
@Configuration @EnableAutoConfiguration (kizárva = {JdbcTemplateAutoConfiguration.class}) public class EmployeeApplication {public static void main (String [] args) {ApplicationContext context = SpringApplication.run (EmployeeApplication.class, args); // ...}}
Tudjuk használni kizárNév annak az osztálynévnek a teljes körű minősítése, amelyet ki akarunk zárni az automatikus konfigurációból:
@Configuration @EnableAutoConfiguration (kizárvaNév = {"org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration"}) public class EmployeeApplication {public static void main (String [] args) {ApplicationContextAppleication ); // ...}}
A Spring Boot 1.2.0 óta használhatjuk a @SpringBootApplication annotáció, amely a három annotáció kombinációja @Configuration, @EnableAutoConfiguration, és@ComponentScan alapértelmezett attribútumaikkal:
@SpringBootApplication public class EmployeeApplication {public static void main (String [] args) {ApplicationContext context = SpringApplication.run (EmployeeApplication.class, args); // ...}}
4. Következtetés
Ebben a cikkben megismerhettük a különbségeket @ComponentScan és @EnableAutoConfiguration tavaszi csizmában.
Mint mindig, ezeknek a példáknak a kódja elérhető a GitHub oldalon.