Dúvida IoC Spring  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
joca_java
JavaChild
[Avatar]

Membro desde: 16/08/2007 14:02:09
Mensagens: 128
Offline

Fala pessoal beleza?

Seguinte... pintou uma dúvida quanto a utilização do IoC do Spring em relação à "boas práticas"

Possuo uma classe, User que possue um Repositório:



E estou exatamente com o mesmo problema postado neste tópico: http://www.guj.com.br/posts/list/70275.java#369569
Ou seja, preciso injetar um objeto em repositoryUser. Danado que não ví a solução no tópico a não ser via aspecto.

A pergunta é: seria muito tosco, toda vez que precisar manipular uma nova classe User eu utilizar o Spring ao invés do "new" e injetar um objeto em "userRepository"?


O problema é que para todas as minhas entidades, eu teria que declarar no arquivo do Spring.
Se for muito tosco, como eu faria para ao utilizar um "new User()", automaticamente um objeto seja injetado em repositoryUser?

Obrigado pela ajuda.


This message was edited 1 time. Last update was at 31/01/2009 21:14:46

joca_java
JavaChild
[Avatar]

Membro desde: 16/08/2007 14:02:09
Mensagens: 128
Offline

putz... citei meu próprio tópico sem querer... foi mal.

This message was edited 1 time. Last update was at 31/01/2009 21:14:01

domingos.neto
Thread.start()

Membro desde: 19/09/2007 11:51:25
Mensagens: 37
Offline

joca_java,

Eu não acho que o User precise de uma referência ao repositório como se fosse um atributo da classe User.

Principalmente, eu NÃO acho que você deva usar o Spring para instanciar Entidades de Negócio. O Spring deve ser usado apenas como uma 'cola' para ligar os Serviços, Repositorios etc.

A solução que eu usaria seria a seguinte:

1. Crie um Service Locator que retorna uma referência ao seu repositório.
2. Na classe User, ou em qualquer outra classe que precise acessar objetos da classe User, conforme necessário, faça: RepositoryUser repository = ServiceLocator.getInstance().getRepositoryUser()
Assim seu design fica bem mais simples e o Spring fica restrito a onde deveria estar!

Visite: http://www.codeinstructions.com/
peerless
GUJ Master
[Avatar]

Membro desde: 22/01/2007 14:52:26
Mensagens: 1391
Localização: Porto Alegre / RS
Offline

Vi o pessoal fazer com aspectos também, interceptando o 'new' da classe de entidade.

Edit: Err, agora que li teu topico completo e vi que já tinha visto isso. hehe!

This message was edited 1 time. Last update was at 19/02/2009 13:25:59


follow me
pitacos

"The most problems that teams face are about communication, and all the others are too." - Dan North





[MSN]
andredecotia
JWizard
[Avatar]

Membro desde: 19/10/2009 14:37:32
Mensagens: 2267
Localização: São Paulo
Offline

domingos.neto wrote:joca_java,

Eu não acho que o User precise de uma referência ao repositório como se fosse um atributo da classe User.

Principalmente, eu NÃO acho que você deva usar o Spring para instanciar Entidades de Negócio. O Spring deve ser usado apenas como uma 'cola' para ligar os Serviços, Repositorios etc.

A solução que eu usaria seria a seguinte:

1. Crie um Service Locator que retorna uma referência ao seu repositório.
2. Na classe User, ou em qualquer outra classe que precise acessar objetos da classe User, conforme necessário, faça: RepositoryUser repository = ServiceLocator.getInstance().getRepositoryUser()
Assim seu design fica bem mais simples e o Spring fica restrito a onde deveria estar!


Oi Domingos, pode exemplificar como o Spring está sendo usado no seu exemplo?

--
André AS


Analista Programador Java Web freelancer / home office
Linkedin: http://www.linkedin.com/profile/view?id=41470291&trk=tab_pro

[Email] [MSN] [ICQ]
esmiralha
JavaEvangelist

Membro desde: 19/07/2006 09:04:42
Mensagens: 402
Offline

Acho que o padrão Factory (DDD) é a resposta que eu daria a esse problema. Eu faria a injeção do UserRepository na UserFactory.
j0nny
GUJ Master
[Avatar]

Membro desde: 19/09/2009 00:01:57
Mensagens: 1121
Localização: Blumenau - SC
Offline

Eu não usaria um factory apenas para as entidades, eu faria como vc mostrou no tópico msm...
Claro que seria mais legal interceptar o 'new', mas dá mais trabalho

PS: Se fo só pra IoC, prefiro o Guice.

@jntsdaniel
github.com/jonatasdaniel

---

AndOrm - Framework ORM para Android
http://github.com/jonatasdaniel/andorm
[WWW]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team