Spring – Âmbitos do feijão

Advertisements

br>

Ao definir um <bean> tem a opção de declarar um âmbito para esse feijão. Por exemplo, para forçar a Primavera a produzir uma nova instância de feijão cada vez que for necessário, deve declarar o atributo de escopo do feijão como sendo protótipo. Da mesma forma, se quiser que a Primavera devolva a mesma instância de feijão cada vez que for necessária, deve declarar o atributo de escopo do feijão como sendo de um único botão.

A Estrutura da Primavera suporta os cinco âmbitos seguintes, três dos quais só estão disponíveis se utilizar uma Aplicação de Contexto Web.

>th>Scope & Description

Sr.No.
1

singleton

Esta definição de feijão é alargada a uma única instância por contentor de Spring IoC (por defeito).

2

protótipo

Este escopo uma única definição de feijão para ter qualquer número de instâncias de objectos.

3

pedido

Este escopo uma definição de feijão para um pedido HTTP. Apenas válido no contexto de uma aplicação Spring ApplicationContext.

4

session

Este escopo uma definição de feijão a uma sessão HTTP. Apenas válido no contexto de uma aplicação Spring ApplicationContext.

5

global-session

Este escopo uma definição de feijão para uma sessão HTTP global. Apenas válido no contexto de um web-aware Spring ApplicationContext.

Neste capítulo, discutiremos os dois primeiros âmbitos e os três restantes serão discutidos quando discutirmos sobre o web-aware Spring ApplicationContext.

O âmbito de um botão

Se um âmbito for definido para um botão, o contentor Spring IoC cria exactamente uma instância do objecto definido por essa definição de feijão. Esta instância única é armazenada numa cache de tais feijões de singleton, e todos os pedidos e referências subsequentes para aquele feijão nomeado devolvem o objecto em cache.

O escopo padrão é sempre singleton. No entanto, quando é necessária uma e apenas uma instância de um feijão, é possível definir a propriedade do escopo como singleton no ficheiro de configuração do feijão, como mostrado no seguinte trecho de código –

<!-- A bean definition with singleton scope --><bean id = "..." class = "..." scope = "singleton"> <!-- collaborators and configuration for this bean go here --></bean>

Exemplo

Deixe-nos ter uma IDE Eclipse em funcionamento e dê os seguintes passos para criar uma Primavera aplicação –

>th>Description

Steps
1 Criar um projecto com um nome SpringExample e criar um pacote com.tutorialspoint sob a pasta src no projecto criado.
2 Adicionar bibliotecas Spring necessárias usando a opção Add External JARs como explicado no capítulo Spring Hello World Example.
3 Criar classes Java HelloWorld e MainApp sob o pacote com.tutorialspoint.
4 Create Beans configuration file Beans.xml sob a pasta src.
5 O passo final é criar o conteúdo de todos os ficheiros Java e ficheiro de Configuração do Feijão e executar a aplicação como explicado abaixo.

Aqui está o conteúdo do ficheiro HelloWorld.java –

package com.tutorialspoint;public class HelloWorld { private String message; public void setMessage(String message){ this.message = message; } public void getMessage(){ System.out.println("Your Message : " + message); }}

Seguir é o conteúdo da aplicação principal.java file –

package com.tutorialspoint;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MainApp { public static void main(String args) { ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml"); HelloWorld objA = (HelloWorld) context.getBean("helloWorld"); objA.setMessage("I'm object A"); objA.getMessage(); HelloWorld objB = (HelloWorld) context.getBean("helloWorld"); objB.getMessage(); }}

Following é o ficheiro de configuração Beans.xml necessário para o âmbito de um único botão –

<?xml version = "1.0" encoding = "UTF-8"?><beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id = "helloWorld" class = "com.tutorialspoint.HelloWorld" scope = "singleton"> </bean></beans>

Após ter acabado de criar os ficheiros de configuração da fonte e do feijão, vamos executar a aplicação. Se tudo estiver bem com a sua aplicação, imprimirá a seguinte mensagem –

Your Message : I'm object AYour Message : I'm object A

O escopo do protótipo

Se o escopo estiver definido para protótipo, o contentor de Spring IoC cria uma nova instância de feijão do objecto cada vez que é feito um pedido para esse feijão específico. Como regra, utilizar o protótipo de escopo para todos os feijões de estado cheio e o escopo de um botão para feijões sem estado.

Para definir um escopo protótipo, pode-se definir a propriedade do escopo como protótipo no ficheiro de configuração do feijão, como mostrado no seguinte trecho de código –

<!-- A bean definition with prototype scope --><bean id = "..." class = "..." scope = "prototype"> <!-- collaborators and configuration for this bean go here --></bean>

Exemplo

Deixe-nos ter a IDE Eclipse em funcionamento e siga os seguintes passos para criar uma Primavera aplicação –

>th>Description

Steps
1 Criar um projecto com um nome SpringExample e criar um pacote com.tutorialspoint sob a pasta src no projecto criado.
2 Adicionar bibliotecas Spring necessárias usando a opção Add External JARs como explicado no capítulo Spring Hello World Example.
3 Criar classes Java HelloWorld e MainApp sob o pacote com.tutorialspoint.
4 Create Beans configuration file Beans.xml sob a pasta src.
5 O passo final é criar o conteúdo de todos os ficheiros Java e ficheiro de Configuração do Feijão e executar a aplicação como explicado abaixo.

Aqui está o conteúdo do ficheiro HelloWorld.java

package com.tutorialspoint;public class HelloWorld { private String message; public void setMessage(String message){ this.message = message; } public void getMessage(){ System.out.println("Your Message : " + message); }}

Seguir é o conteúdo da aplicação principal.java file –

package com.tutorialspoint;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MainApp { public static void main(String args) { ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml"); HelloWorld objA = (HelloWorld) context.getBean("helloWorld"); objA.setMessage("I'm object A"); objA.getMessage(); HelloWorld objB = (HelloWorld) context.getBean("helloWorld"); objB.getMessage(); }}

Following é o ficheiro de configuração Beans.xml necessário para o escopo do protótipo –

<?xml version = "1.0" encoding = "UTF-8"?><beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id = "helloWorld" class = "com.tutorialspoint.HelloWorld" scope = "prototype"> </bean></beans>

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *