Diferença referente aos beans singleton Spring X EJB

6 respostas
J

Bom dia Pessoal, Uma dúvida referente ao beans singleton. No caso do Spring por padrão todos o beans declarados são singleton (a não ser que você mude explicitamente), quando criamos um bean de negocio o mesmo por default tem esse scopo, minha dúvida é a seguinte : Já que o beans do Spring são thread-safe isso não degrada a performace? no caso do EJB mesmo com @Singleton usamos @Stateless justamente por isso…

Gostaria de saber como você veem essas diferenças.

6 Respostas

D

No caso dos ejbs, um @Singleton não é capaz de armazenar o estado, tornando-se, portanto, stateless.
A concepção de ambos é diferente e, no eclipse, pode-se mudar o scope para request e torná-lo stateless também.
Isso, com certeza, terá um reflexo no desempenho e, principalmente, quando o objeto precisa ser “limpo” várias vezes durante a execução do sistema. Isso pode ocasionar transtornos sérios.

J

Mais porque o Spring utiliza beans em scopo de Singleton ?
isso não degrada a performace? pois eles são thread - safe

D

Por opção de quem o desenvolveu, este é o padrão. Agora, como eu comentei (e você também já sabia), é plenamente possível alterar isso.
Um outro ponto que pode ser considerado é o custo de criar e destruir objetos. O EJB, ao utilizar-se de stateless faz isso continuamente, enquanto que, usando-se de singleton, será necessário instanciar os beans apenas uma vez (por classloader, lógico).

J

Olá drsmachado , primeiramente gostaria de agradecer atenção.

A respeito da sua citação :


Por opção de quem o desenvolveu, este é o padrão. Agora, como eu comentei (e você também já sabia), é plenamente possível alterar isso.

Isso eu entendi =)…
Também sei que podemos usar beans de spring em request, porém as aplicações corporativas aonde trabalhei usa o scopo singleton…

Acho que eu não me expliquei bem ou meu raciocínio não acompanhou o seu rs , para melhorar o a compreensão irei realizar algumas perguntas mais diretas, se tiver paciência de responder , me ajudaria muito.

-Spring

1-)Os beans do spring singleton armazena o estado?

2-)Os beans do spring singleton são thread-safe, certo ?

3-)Por eles se thread-safe, não degrada a performace ? (pois temos que fazer uma trava no método…)

4-)Se degrada a performace porque as aplicações corporativas não utiliza beans com escopo de request ? (mesmo com custo de criação de objetos seria mais vantajoso).

-EJB

5-)Se as aplicação utiliza beans de spring como singleton, porque com EJB utliza-se stateless e não @Singleton (já que não armazena o estado)?

6-)Qual a diferença entre beans de Spring singleton e EJB @Singleton ?

D

Bom, vou te sugerir a leitura deste tópico aqui. Deverá facilitar teu entendimento a respeito de tais diferenças.

J

Ok drsmachado , vou ler.

Se alguem quiser contribuir tambem =)

Criado 18 de fevereiro de 2014
Ultima resposta 19 de fev. de 2014
Respostas 6
Participantes 2