Na estrutura da Primavera, podemos criar feijões em 6 escopos de feijão de Primavera embutidos e também pode definir o seu escopo personalizado de feijão. Destes seis âmbitos, quatro só estão disponíveis se utilizar um web-aware ApplicationContextsingleton e prototype os âmbitos estão disponíveis em qualquer tipo de recipientes IOC.

Table of Contents1. Spring Bean Scope Types 1.1. singleton scope 1.2. prototype scope 1.3. request scope 1.4. session scope 1.5. application scope 1.6. websocket scope2. Custom thread scope3. Summary

Escopos de Feijão Primaveril Tipo

Na Primavera, o âmbito pode ser definido utilizando a anotação do feijão primaveril @Scope. Vamos listar rapidamente todos os seis âmbitos de feijão embutidos disponíveis para utilização no contexto de aplicação de primavera. Estes mesmos escopos aplicam-se também ao escopo do feijão de arranque de molas.

>th>Description

Scope
singleton (por defeito) Contentor único de feijão por mola de IoC
prototype Opposite a singleton, produz uma nova instância cada vez que um feijão é solicitado.
request Uma única instância será criada e disponível durante o ciclo de vida completo de um pedido HTTP.

Válido apenas na Primavera da Web ApplicationContext.

session Uma única instância será criada e estará disponível durante o ciclo de vida completo de uma Sessão HTTP.

Válido apenas na Primavera sensível à web ApplicationContext.

application Uma única instância será criada e estará disponível durante o ciclo de vida completo de ServletContext.

Só válido em web-aware Primavera ApplicationContext.

websocket Uma única instância será criada e estará disponível durante todo o ciclo de vida de WebSocket.

Válido apenas na Primavera sensível à web ApplicationContext.

1.1. escopo de um botão

singleton é o escopo padrão de feijão em contentor de Primavera. Diz ao contentor para criar e gerir apenas uma instância da classe de feijão, por contentor. Esta instância única é armazenada numa cache de tais feijões singleton, e todos os pedidos e referências subsequentes para aquele feijão nomeado devolvem a instância em cache.

Exemplo de feijão singleton scope usando configuração Java –

Exemplo de feijão singleton scope usando configuração XML –

1.2. protótipo de escopo

prototype escopo resulta na criação de uma nova instância de feijão cada vez que um pedido de feijão é feito por código de aplicação.

deve saber que os métodos do ciclo de vida do feijão de destruição não são chamados prototype feijão escopado, apenas os métodos de chamada de retorno de inicialização são chamados. Assim, como programador, é responsável pela limpeza de instâncias de feijão com protótipo e de qualquer recurso aí existente.

Java config example of prototype bean scope –

@Component@Scope("prototype")public class BeanClass {}

XML config example of prototype bean scope –

<bean class="com.howtodoinjava.BeanClass" scope="prototype" />
As a rule, deve preferir usar o prototype espaço para todos os feijões apátridas e o singleton espaço para os feijões apátridas.
para utilizar feijões no âmbito do pedido, sessão, aplicação e websocket, é necessário registar o RequestContextListener ou RequestContextFilter.

1.3. âmbito do pedido

Em request âmbito, o contentor cria uma nova instância para cada pedido HTTP. Assim, se o servidor estiver actualmente a tratar 50 pedidos, então o contentor pode ter no máximo 50 instâncias individuais de classe de feijão. Qualquer mudança de estado para uma instância, não será visível para outras instâncias. Estas instâncias são destruídas assim que o pedido é concluído.

Java config example of request bean scope –

@Component@Scope("request")public class BeanClass {}//or@Component@RequestScopepublic class BeanClass {}

XML config example of request bean scope –

<bean class="com.howtodoinjava.BeanClass" scope="request" />

p>Reading More: Como funcionam os servidores web?

1.4. âmbito da sessão

Em session âmbito, o contentor cria uma nova instância para cada sessão HTTP. Assim, se o servidor tiver 20 sessões activas, então o contentor pode ter no máximo 20 instâncias individuais de classe de feijão. Todos os pedidos HTTP dentro de uma única sessão terão acesso à mesma instância individual de feijão no âmbito dessa sessão.

Ainda mudança de estado para uma instância, não será visível para outras instâncias. Estas instâncias são destruídas assim que a sessão é destruída/fecha no servidor.

Java config example of session bean scope –

@Component@Scope("session")public class BeanClass {}//or@Component@SessionScopepublic class BeanClass {}

XML config example of session bean scope –

<bean class="com.howtodoinjava.BeanClass" scope="session" />

1.5. âmbito de aplicação

In application âmbito, recipiente cria uma instância por tempo de execução da aplicação web. É quase semelhante a singleton escopo, com apenas duas diferenças, ou seja

  1. application o feijão escopado é singleton por ServletContext, enquanto singleton o feijão escopado é singleton por ApplicationContext. Note-se que podem existir múltiplos contextos de aplicação para uma única aplicação.
  2. application scoped bean is visible as a ServletContext attribute.

Java config example of application bean scope –

@Component@Scope("application")public class BeanClass {}//or@Component@ApplicationScopepublic class BeanClass {}

XML config example of application bean scope –

<bean class="com.howtodoinjava.BeanClass" scope="application" />

1.6. websocket scope

O WebSocket Protocol permite a comunicação bidireccional entre um cliente e um anfitrião remoto que tenha optado por comunicar com o cliente. O WebSocket Protocol proporciona uma única ligação TCP para tráfego em ambos os sentidos. Isto é especialmente útil para aplicações multi-utilizador com edição simultânea e jogos multi-utilizador.

Neste tipo de aplicações web, o HTTP é utilizado apenas para o aperto de mão inicial. O servidor pode responder com o estado HTTP 101 (protocolos de comutação) se estiver de acordo – ao pedido de aperto de mão. Se o aperto de mão tiver êxito, a tomada TCP permanece aberta e tanto o cliente como o servidor podem utilizá-la para enviar mensagens um ao outro.

Java config example of websocket bean scope –

@Component@Scope("websocket")public class BeanClass {}

XML config example of websocket bean scope –

<bean class="com.howtodoinjava.BeanClass" scope="websocket" />

Por favor note que websocket os feijões escopados são tipicamente singletons e vivem mais tempo do que qualquer sessão individual do WebSocket.

Escopo da rosca personalizada

Mola também fornece um não por defeito threadscopo usando a classe SimpleThreadScope. Para utilizar este âmbito, é necessário registá-lo para contentor utilizando CustomScopeConfigurer class.

Todos os pedidos de um feijão retornarão a mesma instância dentro do mesmo fio.

Java config example of thread bean scope –

@Component@Scope("thread")public class BeanClass {}

XML config example of thread bean scope –

<bean class="com.howtodoinjava.BeanClass" scope="thread" />

Summary

Spring framework has provided six spring bean scopes and instances have different lifecycle span within each scope. Como revelador, temos de escolher sabiamente o âmbito de qualquer feijão gerido em contentor. Além disso, devemos tomar decisões sensatas quando feijões com diferentes âmbitos de aplicação se referirem uns aos outros.

Tente lembrar-se de todas as informações dadas acima para responder a qualquer pergunta de entrevista de âmbito primaveril.

Aprendizagem Feliz !!

Este post foi útil?

Deixe-nos saber se gostou do post. Só assim podemos melhorar.
Sim
Não

Deixe uma resposta

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