Spring – IoC Containers

author
3 minutes, 27 seconds Read

Containerul Spring IoC se află în centrul Spring Framework. Containerul va crea obiectele, le va lega între ele, le va configura și va gestiona întregul lor ciclu de viață, de la creare până la distrugere. Containerul Spring utilizează injecția de dependență (DI) pentru a gestiona componentele care alcătuiesc o aplicație.

Spring oferă următoarele două tipuri de containere.

  1. Container BeanFactory
  2. Container ApplicationContext

Citește mai departe: Inversion of Control and Dependency Injection

BeanFactory

Un BeanFactory nu este, în esență, nimic mai mult decât interfața pentru o fabrică avansată capabilă să mențină un registru de diferite beans și dependențele lor.

FactoryFactory BeanFactory ne permite să citim definițiile bean-urilor și să le accesăm folosind fabrica de bean-uri.

1.1. Cum se creează BeanFactory

Când folosim doar BeanFactory putem să creăm una și să citim câteva definiții de bean în format XML, după cum urmează:

Alte modalități de a crea o fabrică de bean sunt cele de mai jos:

În principiu, asta este tot ce există. Folosind getBean(String), puteți prelua instanțe ale boabelor dumneavoastră; vizualizarea din partea clientului a BeanFactory este surprinzător de simplă.

1.2. Metode BeanFactory

Interfața BeanFactory are doar șase metode pe care codul client trebuie să le apeleze:

  1. boolean containsBean(String): returnează true dacă BeanFactory conține o definiție de bean sau o instanță de bean care se potrivește cu numele dat
  2. Object getBean(String): returnează o instanță a beanului înregistrat sub numele dat. În funcție de modul în care a fost configurată bean-ul prin configurația BeanFactory, va fi returnată fie o instanță singleton și, prin urmare, partajată, fie un bean nou creat. Un BeansException va fi aruncat atunci când fie bean-ul nu a putut fi găsit (caz în care va fi un NoSuchBeanDefinitionException), fie a apărut o excepție la instanțierea și pregătirea bean-ului
  3. Object getBean(String, Class): returnează un bean, înregistrat sub numele dat. Bean-ul returnat va fi transformat în clasa dată. În cazul în care bean-ul nu a putut fi turnat, se vor arunca excepțiile corespunzătoare (BeanNotOfRequiredTypeException). În plus, se aplică toate regulile metodei getBean(String) (a se vedea mai sus)
  4. Class getType(String name): returnează Class a bean-ului cu numele dat. Dacă nu a putut fi găsit nici un bean corespunzător numelui dat, se va arunca un NoSuchBeanDefinitionException
  5. boolean isSingleton(String): determină dacă definiția beanului sau instanța de bean înregistrată sub numele dat este sau nu un singleton. Dacă nu a putut fi găsit nici un bean care să corespundă numelui dat, se va arunca un NoSuchBeanDefinitionException
  6. String getAliases(String): Return the aliases for the given bean name, if any were defined in the bean definition

ApplicationContext

Contenitorul ApplicationContext adaugă mai multe funcționalități specifice întreprinderilor, cum ar fi capacitatea de a rezolva mesaje textuale dintr-un fișier de proprietăți și capacitatea de a publica evenimente ale aplicației către ascultătorii de evenimente interesați. Acest container este definit de interfața org.springframework.context.ApplicationContext.

Contenitorul ApplicationContext include toate funcționalitățile containerului BeanFactory, astfel încât este în general recomandat în locul BeanFactory. BeanFactory poate fi totuși utilizat pentru aplicații ușoare, cum ar fi dispozitivele mobile sau aplicațiile bazate pe applet-uri, unde volumul și viteza datelor sunt semnificative.

2.1. Tipuri de ApplicationContext

Cele mai frecvent utilizate ApplicationContext implementări sunt:

  1. FileSystemXmlApplicationContext – Acest container încarcă definițiile beans dintr-un fișier XML. Aici trebuie să furnizați constructorului calea completă a fișierului XML de configurare a boabelor.
  2. ClassPathXmlApplicationContext – Acest container încarcă definițiile boabelor dintr-un fișier XML. Aici nu este necesar să furnizați calea completă a fișierului XML, dar trebuie să setați CLASSPATH în mod corespunzător, deoarece acest container va căuta fișierul XML de configurare a boabelor în CLASSPATH.
  3. WebXmlApplicationContext – Acest container încarcă fișierul XML cu definițiile tuturor boabelor dintr-o aplicație web.

2.2.2. Cum se creează ApplicationContext

Un exemplu de cod pentru instanțierea contextului de aplicație va arăta astfel.

.

Similar Posts

Lasă un răspuns

Adresa ta de email nu va fi publicată.