Tavasz @ Elsődleges kommentár

1. Áttekintés

Ebben a gyors bemutatóban megvitatjuk a tavaszit @Elsődleges megjegyzés, amelyet a keretrendszer 3.0 verziójával vezettek be.

Egyszerűen fogalmazva, használunk @Elsődleges nagyobb előnyben részesíteni a babot, ha több azonos típusú bab van.

Írjuk le részletesen a problémát.

2. Miért van @Elsődleges Szüksége van?

Egyes esetekben, több, azonos típusú babot kell regisztrálnunk.

Ebben a példában van JohnEmployee () és TonyEmployee () bab a Munkavállaló típus:

@Configuration public class Config {@Bean public Employee JohnEmployee () {return new Employee ("John"); } @Bean állami alkalmazott TonyEmployee () {return new Employee ("Tony"); }}

Tavaszi dobások NoUniqueBeanDefinitionException ha megpróbáljuk futtatni az alkalmazást.

Azokhoz a babokhoz való hozzáféréshez, amelyeket általában használunk @Qualifier („beanName”) annotáció.

Az injekciós ponton együtt alkalmazzuk @Autowired. Esetünkben a babot a konfigurációs szakaszban választjuk ki @ Minősítő itt nem lehet alkalmazni. Többet megtudhatunk @ Minősítő annotáció a link követésével.

A probléma megoldása érdekében a Spring felajánlja a @Elsődleges annotáció.

3. Használja @Elsődleges Val vel @Bab

Vessünk egy pillantást a konfigurációs osztályra:

@Configuration public class Config {@Bean public Employee JohnEmployee () {return new Employee ("John"); } @Bean @ Elsődleges állami alkalmazott TonyEmployee () {return new Employee ("Tony"); }}

Megjelöljük TonyEmployee () bab @Elsődleges. A tavasz beadja TonyEmployee () bab elsődlegesen a JohnEmployee ().

Indítsuk el az alkalmazás kontextust, és kapjuk meg a Munkavállaló bab belőle:

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext (Config.class); Alkalmazott alkalmazott = context.getBean (Employee.class); System.out.println (alkalmazott);

Az alkalmazás futtatása után:

Alkalmazott {name = 'Tony'}

A kimenetből láthatjuk, hogy a TonyEmployee () példány előnyben részesíti az automatikus vezetékezést.

4. Használja @Elsődleges Val vel @Összetevő

A @Primary-t közvetlenül a babra használhatjuk. Vessünk egy pillantást a következő forgatókönyvre:

nyilvános felületkezelő {String getManagerName (); }

Nekünk van Menedzser interfész és két alosztály bab, Osztály vezetője:

@Component public class DepartmentManager végrehajtja a Manager {@Orride public String getManagerName () {return "Department manager"; }}

És a GeneralManager bab:

@Component @Primary public class A GeneralManager végrehajtja a Manager {@Orride public String getManagerName () {return "General manager"; }}

Mindkettő felülírja a getManagerName () a Menedzser felület. Ezenkívül vegye figyelembe, hogy jelöljük a GeneralManager bab @Elsődleges.

Ezúttal, @Elsődleges csak akkor van értelme, ha engedélyezzük az alkatrész-vizsgálatot:

@Configuration @ComponentScan (basePackages = "org.baeldung.primary") public class Config {}

Hozzunk létre egy szolgáltatást a függőség-injektálás használatához, miközben megtaláljuk a megfelelő babot:

@Service public class ManagerService {@Autowired private manager manager; public manager getManager () {return manager; }}

Itt mindkét bab Osztály vezetője és GeneralManager jogosultak az automatikus vezetésre.

Ahogy megjelöltük GeneralManager bab @Elsődleges, a függőségi injekcióhoz kerül kiválasztásra:

ManagerService szolgáltatás = context.getBean (ManagerService.class); Menedzser menedzser = service.getManager (); System.out.println (manager.getManagerName ());

A kimenetVezérigazgató ”.

5. Következtetés

Ebben a cikkben megismerhettük a Spring's-t @Elsődleges annotáció. A kód példákkal megmutattuk a. Igényét és felhasználási eseteit @Elsődleges.

Szokás szerint a cikk teljes kódja elérhető a GitHub projekten.


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