Spring – IoC-containere

author
3 minutes, 3 seconds Read

Spring IoC-containeren er kernen i Spring Framework. Containeren opretter objekterne, kobler dem sammen, konfigurerer dem og styrer deres komplette livscyklus fra oprettelse til destruktion. Spring-containeren bruger dependency injection (DI) til at administrere de komponenter, der udgør et program.

Spring tilbyder følgende to typer containere.

  1. BeanFactory container
  2. ApplicationContext container

Læs mere: Inversion of Control and Dependency Injection

BeanFactory

En BeanFactory er i bund og grund ikke andet end grænsefladen for en avanceret fabrik, der er i stand til at vedligeholde et register over forskellige bønner og deres afhængigheder.

Den BeanFactory giver os mulighed for at læse bønnedefinitioner og få adgang til dem ved hjælp af bønnefabrikken.

1.1. Sådan oprettes BeanFactory

Ved brug af blot BeanFactory kan vi oprette en og læse nogle bønnedefinitioner i XML-formatet som følger:

Andre måder at oprette bønnefabrikken på er som nedenfor:

Grundlæggende er det alt, hvad der er. Ved hjælp af getBean(String) kan du hente instanser af dine bønner; klientsidens visning af BeanFactory er overraskende enkel.

1.2. BeanFactory-metoder

Interfacet BeanFactory har kun seks metoder, som klientkoden kan kalde:

  1. boolean containsBean(String): returnerer sandt, hvis BeanFactory indeholder en bønnedefinition eller en bønneinstans, der passer til det givne navn
  2. Object getBean(String): returnerer en instans af den bønne, der er registreret under det givne navn. Afhængigt af, hvordan bønnen blev konfigureret ved BeanFactory-konfigurationen, returneres enten en singleton og dermed delt instans eller en nyoprettet bønne. En BeansException vil blive kastet, hvis bønnen enten ikke kunne findes (i så fald vil det være en NoSuchBeanDefinitionException), eller der opstod en undtagelse under instantiering og klargøring af bønnen
  3. Object getBean(String, Class): returnerer en bønne, registreret under det angivne navn. Den returnerede bønne vil blive castet til den angivne Class. Hvis bønnen ikke kunne castes, vil de tilsvarende undtagelser blive kastet (BeanNotOfRequiredTypeException). Desuden gælder alle regler for getBean(String)-metoden (se ovenfor)
  4. Class getType(String name): returnerer Class af bønnen med det angivne navn. Hvis der ikke kunne findes nogen bønne svarende til det givne navn, kastes en NoSuchBeanDefinitionException
  5. boolean isSingleton(String): afgør, om den bønnedefinition eller bønneinstans, der er registreret under det givne navn, er en singleton eller ej. Hvis der ikke kunne findes nogen bønne, der svarer til det angivne navn, vil en NoSuchBeanDefinitionException blive afvist
  6. String getAliases(String): Return the aliases for the given bean name, if any were defined in the bean definition

ApplicationContext

ApplicationContext container adds more enterprise-specific functionality such as the ability to resolve textual messages from a properties file and the ability to publish application events to interested event listeners. Denne container er defineret af grænsefladen org.springframework.context.ApplicationContext.

ApplicationContext-containeren indeholder al funktionalitet fra BeanFactory-containeren, så den anbefales generelt frem for BeanFactory. BeanFactory kan stadig bruges til letvægtsapplikationer som mobile enheder eller applet-baserede applikationer, hvor datamængden og hastigheden er betydelig.

2.1. Typer af ApplicationContext

De mest almindeligt anvendte ApplicationContext implementeringer er:

  1. FileSystemXmlApplicationContext – Denne container indlæser definitionerne af bønnerne fra en XML-fil. Her skal du angive den fulde sti til XML-bønnekonfigurationsfilen til konstruktøren.
  2. ClassPathXmlApplicationContext – Denne beholder indlæser definitionerne af bønnerne fra en XML-fil. Her behøver du ikke at angive den fulde sti til XML-filen, men du skal angive CLASSPATH korrekt, fordi denne container vil søge efter XML-filen til bønnekonfiguration i CLASSPATH.
  3. WebXmlApplicationContext – Denne container indlæser XML-filen med definitionerne af alle bønnerne fra en webapplikation.

2.2. Sådan oprettes ApplicationContext

En eksempelkode til instantiering af applikationskontekst vil se således ud.

Similar Posts

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.