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:
public class User{
RepositoryUser repositoryUser;
... // outros atributos
}
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”? :oops:
User user = (User)getSpringContext().getBean("user"); // levando em consideração que "user" estaria declarado com scope="prototype"
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?
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:
Crie um Service Locator que retorna uma referência ao seu repositório.
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!
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:
Crie um Service Locator que retorna uma referência ao seu repositório.
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![/quote]
Oi Domingos, pode exemplificar como o Spring está sendo usado no seu exemplo?
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 :lol: