Injeção de dependencia e Services
20/07/2012 14:01
0
É possível injetar services em classes que estão na pasta /groovy e /java?
Tags: injecao de dependencia, service


1
Brother,

na documentação tem uma explicação dá uma olhada vê se ajuda! LINK

Té,


0
Valeu pela ajuda, mas o link que vc mandou se refere ao uso de services do java, como registrá-lo no spring etc, mas não é essa a minha dúvida. Na documentação também não consegui encontrar :/.
A questão é que tenho o service do grails mesmo, e quero utilizá-lo em classes que estão no pacote src/groovy e src/java.

Quando utilizamos o service em um controller, por exemplo, basta declarar-mos o service como uma variável do controller (def algumaCoisaService) que ele será injetado, não necessitando de instanciar-mos um novo objeto (def algumaCoisaService = new AlgumaCoisaService()).

Quando tentei utilizar o service na classe do pacote src/groovy ele não foi injetado, então minha dúvida é se teria como utilizá-lo da mesma forma que no controller, com a injeção de dependencia, em classes deste pacote.

Encontrei uma forma de resolver meu problema, mas não sei se seria a melhor solução:
//No service criei o método que me retorna uma instancia do service
class AlgumaCoisaService {

static AlgumaCoisaService getInstancia() {
ApplicationHolder.application.mainContext.getBean('algumaCoisaService')
}
//..
}

//E para criar meu service na classe do pacote src/groovy faço o seguinte
class ClasseNoPacoteSRCGroovy {

def algumaCoisaService = AlgumaCoisaService.instancia
//..
}

20/07/2012 22:57


0
Olá.

Amigo, você está falando de um projeto Grails mesmo?

Porque se for, não vejo motivo de tentar injetar serviços fora de controladores, visto que toda requisição necessariamente passa por um controlador.

Qual seria sua motivação para isso que pretende fazer? Se for o reaproveitamento de Services, lembre que pode-se injetar serviços em outros serviços ;)

Ah, e sabe porque o Grails não injeta os serviços em classes que não são controllers? Simples: O Grails conhece o ciclo de vida e o objetivo dos controladores. Já suas classes comuns são "caixa preta" para o Grails, entende?

Abraços.


1
Oi VrCarvalho,

você pode, se quiser, declarar uma classe presente nos diretórios src/groovy ou src/java como um bean do Spring.

Para tal, você deve declará-lo no arquivo resources.groovy ou resources.xml no diretório grails-app/conf/spring



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto