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.


$config[zx-auto] not found$config[zx-overlay] not found