Spring – IoC Containers

author
2 minutes, 55 seconds Read

Il contenitore Spring IoC è al centro del Framework Spring. Il contenitore crea gli oggetti, li collega, li configura e gestisce il loro ciclo di vita completo dalla creazione alla distruzione. Il contenitore Spring usa la dependency injection (DI) per gestire i componenti che compongono un’applicazione.

Spring fornisce i seguenti due tipi di contenitori.

  1. BeanFactory container
  2. ApplicationContext container

Leggi tutto: Inversione del controllo e iniezione di dipendenza

BeanFactory

Una BeanFactory non è essenzialmente altro che l’interfaccia per una fabbrica avanzata capace di mantenere un registro di diversi beans e le loro dipendenze.

La BeanFactory ci permette di leggere le definizioni dei bean e di accedervi usando la bean factory.

1.1. Come creare BeanFactory

Quando usiamo solo la BeanFactory possiamo crearne una e leggere alcune definizioni di bean nel formato XML come segue:

Altri modi per creare bean factory sono i seguenti:

Fondamentalmente è tutto qui. Usando getBean(String), puoi recuperare le istanze dei tuoi beans; la vista lato client del BeanFactory è sorprendentemente semplice.

1.2. Metodi di BeanFactory

L’interfaccia BeanFactory ha solo sei metodi che il codice client può chiamare:

  1. boolean containsBean(String): restituisce true se la BeanFactory contiene una definizione di bean o un’istanza di bean che corrisponde al nome dato
  2. Object getBean(String): ritorna un’istanza del bean registrato con il nome dato. A seconda di come il bean è stato configurato dalla configurazione BeanFactory, verrà restituita un’istanza singleton e quindi condivisa o un bean appena creato. Un BeansException verrà lanciato quando o il bean non può essere trovato (nel qual caso sarà un NoSuchBeanDefinitionException), o si è verificata un’eccezione durante l’istanza e la preparazione del bean
  3. Object getBean(String, Class): restituisce un bean, registrato con il nome dato. Il bean restituito sarà castato alla classe data. Se il bean non può essere castato, verranno lanciate le eccezioni corrispondenti (BeanNotOfRequiredTypeException). Inoltre, si applicano tutte le regole del metodo getBean(String) (vedi sopra)
  4. Class getType(String name): restituisce il Class del bean con il nome dato. Se non è stato trovato nessun bean corrispondente al nome dato, verrà lanciato un NoSuchBeanDefinitionException
  5. boolean isSingleton(String): determina se la definizione del bean o l’istanza del bean registrata con il nome dato è un singleton. Se non è stato trovato nessun bean corrispondente al nome dato, verrà lanciato un NoSuchBeanDefinitionException
  6. String getAliases(String): Restituisce gli alias per il nome del bean dato, se ne sono stati definiti nella definizione del bean

ApplicationContext

Il contenitore ApplicationContext aggiunge funzionalità più specifiche dell’impresa come la capacità di risolvere messaggi testuali da un file di proprietà e la capacità di pubblicare eventi dell’applicazione agli ascoltatori di eventi interessati. Questo contenitore è definito dall’interfaccia org.springframework.context.ApplicationContext.

Il contenitore ApplicationContext include tutte le funzionalità del contenitore BeanFactory, quindi è generalmente consigliato rispetto a BeanFactory. BeanFactory può ancora essere usato per applicazioni leggere come dispositivi mobili o applicazioni basate su applet dove il volume di dati e la velocità sono significativi.

2.1. Tipi di ApplicationContext

Le implementazioni più comunemente usate ApplicationContext sono:

  1. FileSystemXmlApplicationContext – Questo contenitore carica le definizioni dei beans da un file XML. Qui è necessario fornire il percorso completo del file XML di configurazione dei fagioli al costruttore.
  2. ClassPathXmlApplicationContext – Questo contenitore carica le definizioni dei fagioli da un file XML. Qui non è necessario fornire il percorso completo del file XML ma è necessario impostare CLASSPATH correttamente perché questo contenitore cercherà il file XML di configurazione dei fagioli in CLASSPATH.
  3. WebXmlApplicationContext – Questo contenitore carica il file XML con le definizioni di tutti i fagioli da un’applicazione web.

2.2. Come creare ApplicationContext

Un codice di esempio per l’istanza del contesto applicativo sarà simile a questo.

Similar Posts

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.