| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/01/2009 20:49:06
|
joca_java
JavaChild
![[Avatar]](/images/avatar/85fa59ac8a893137b2777551335631ed.jpg)
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
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/01/2009 21:12:45
|
joca_java
JavaChild
![[Avatar]](/images/avatar/85fa59ac8a893137b2777551335631ed.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/01/2009 21:26:12
|
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/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/02/2009 13:23:19
|
peerless
GUJ Master
![[Avatar]](/images/avatar/5b2a8f2b014bb326fd82ee313704e78c.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/02/2011 18:25:02
|
andredecotia
JWizard
![[Avatar]](/images/avatar/3e0c75ef9041e74cc2a533fa0fbbf33a.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/02/2011 11:51:07
|
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/02/2011 14:35:39
|
j0nny
GUJ Master
![[Avatar]](/images/avatar/2f37ce1ace06a770fab4452db0fe5c5f.png)
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 |
|
|
 |
|
|