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.
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.
Mais porque o Spring utiliza beans em scopo de Singleton ?
isso não degrada a performace? pois eles são thread - safe
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).
Olá drsmachado , primeiramente gostaria de agradecer atenção.
A respeito da sua citação :
[quote]
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. [/quote]
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 ?
Bom, vou te sugerir a leitura deste tópico aqui. Deverá facilitar teu entendimento a respeito de tais diferenças.
Ok drsmachado , vou ler.
Se alguem quiser contribuir tambem =)