Spring – IoC Containers

author
3 minutes, 12 seconds Read

Spring IoC container är kärnan i Spring Framework. Containern skapar objekten, kopplar ihop dem, konfigurerar dem och hanterar deras hela livscykel från skapande till förstörelse. Spring-containern använder sig av dependency injection (DI) för att hantera de komponenter som utgör en applikation.

Spring tillhandahåller följande två typer av containers.

  1. BeanFactory container
  2. ApplicationContext container

Läs mer: En BeanFactory är i princip inget annat än gränssnittet för en avancerad fabrik som kan upprätthålla ett register över olika bönor och deras beroenden.

Med BeanFactory kan vi läsa bönedefinitioner och få tillgång till dem med hjälp av bönfabriken.

1.1. Hur man skapar BeanFactory

När vi bara använder BeanFactory kan vi skapa en och läsa in några bönedefinitioner i XML-format enligt följande:

Andra sätt att skapa bean factory är enligt nedan:

I princip är det allt som finns. Med hjälp av getBean(String) kan du hämta instanser av dina bönor; klientsidans vy av BeanFactory är förvånansvärt enkel.

1.2. BeanFactory-metoder

Gränssnittet BeanFactory har endast sex metoder som klientkoden kan anropa:

  1. boolean containsBean(String): returnerar true om BeanFactory innehåller en bönedefinition eller en böninstans som matchar det givna namnet
  2. Object getBean(String): returnerar en instans av bönan som registrerats under det givna namnet. Beroende på hur bönan konfigurerades genom BeanFactory-konfigurationen returneras antingen en singleton och därmed delad instans eller en nyskapad böna. En BeansException kommer att kastas när antingen bönan inte kunde hittas (i så fall blir det en NoSuchBeanDefinitionException), eller när ett undantag inträffade under instantiering och förberedelse av bönan
  3. Object getBean(String, Class): returnerar en böna, registrerad under det givna namnet. Den returnerade bönan kommer att kastas till den givna klassen. Om bönan inte kunde kastas kommer motsvarande undantag att utlösas (BeanNotOfRequiredTypeException). Dessutom gäller alla regler för getBean(String)-metoden (se ovan)
  4. Class getType(String name): returnerar Class av bönan med det givna namnet. Om ingen bean som motsvarar det givna namnet kunde hittas kommer en NoSuchBeanDefinitionException att kastas
  5. boolean isSingleton(String): avgör om bönedefinitionen eller böninstansen som registrerats under det givna namnet är en singleton eller inte. Om ingen bean som motsvarar det givna namnet kunde hittas, kommer en NoSuchBeanDefinitionException att utlösas
  6. String getAliases(String): Återge alias för det givna bönnamnet, om några har definierats i bönedefinitionen

ApplicationContext

ApplicationContext-behållaren lägger till mer företagsspecifik funktionalitet, t.ex. möjligheten att lösa textmeddelanden från en egenskapsfil och möjligheten att publicera programhändelser till intresserade händelselyssnare. Denna behållare definieras av gränssnittet org.springframework.context.ApplicationContext.

Behållaren ApplicationContext innehåller all funktionalitet i behållaren BeanFactory, så den rekommenderas i allmänhet framför BeanFactory. BeanFactory kan fortfarande användas för lätta applikationer som mobila enheter eller appletbaserade applikationer där datavolym och hastighet är betydande.

2.1. Typer av ApplicationContext

De vanligaste ApplicationContextimplementationerna är:

  1. FileSystemXmlApplicationContext – Denna behållare laddar in definitionerna av bönorna från en XML-fil. Här måste du ange den fullständiga sökvägen till XML-konfigurationsfilen för bönor till konstruktören.
  2. ClassPathXmlApplicationContext – Denna behållare laddar in definitionerna av bönorna från en XML-fil. Här behöver du inte ange den fullständiga sökvägen till XML-filen, men du måste ange CLASSPATH korrekt eftersom den här behållaren kommer att leta efter XML-filen för bönkonfiguration i CLASSPATH.
  3. WebXmlApplicationContext – Den här behållaren laddar XML-filen med definitioner av alla bönor från en webbapplikation.

2.2. Hur man skapar ApplicationContext

En exempelkod för instantiering av applikationskontext ser ut så här.

Similar Posts

Lämna ett svar

Din e-postadress kommer inte publiceras.