[MJ46 - Aspectos] Alguém aí usa aspectos?  XML
Índice dos Fóruns » MundoJ - Artigos, Notícias e Debates
Autor Mensagem
Mr_Arthur
Java Ninja
[Avatar]

Membro desde: 02/02/2007 10:54:04
Mensagens: 285
Localização: Brasília - DF
Offline

Guerra,

parabéns pelo Artigo, ele ficou muito bom mesmo.
Me deu uma luz para alguns problemas que não conseguia pensar em uma saída.

Quando comecei a estudar sobre injeção de dependencias achei aquilo essencial, a questão do desacoplamento e do wiring.
O problema é que minhas classes deixaram de ficar acopladas as minhas próprias outras classes e passaram a ficar acopladas a um framework, ou acopladas a uma outra classe minha que encapsulasse a funcionalidade do framework.

Lendo o artigo, percebi então que a injeção de dependencias pode fazer parte de um componente transversal à minha aplicação, certo?
É isso mesmo então? Para deixar minhas classes com um bom nível de desacoplamento devo utilizar a DI juntamente com a AOP?
Pode exemplicar (em palavras mesmo) como seria um jeito de usar isso?

Obrigado e mais uma vez, parabéns pelo artigo.

developer in brasília.
scjp, scwcd, ocpbcd.

@armoucar
Guerr@
Virtual Machine Man
[Avatar]

Membro desde: 03/12/2006 10:32:50
Mensagens: 520
Offline

Mr_Arthur wrote:Guerra,

parabéns pelo Artigo, ele ficou muito bom mesmo.
Me deu uma luz para alguns problemas que não conseguia pensar em uma saída.

Quando comecei a estudar sobre injeção de dependencias achei aquilo essencial, a questão do desacoplamento e do wiring.
O problema é que minhas classes deixaram de ficar acopladas as minhas próprias outras classes e passaram a ficar acopladas a um framework, ou acopladas a uma outra classe minha que encapsulasse a funcionalidade do framework.

Lendo o artigo, percebi então que a injeção de dependencias pode fazer parte de um componente transversal à minha aplicação, certo?
É isso mesmo então? Para deixar minhas classes com um bom nível de desacoplamento devo utilizar a DI juntamente com a AOP?
Pode exemplicar (em palavras mesmo) como seria um jeito de usar isso?

Obrigado e mais uma vez, parabéns pelo artigo.



O Spring hoje possui suporte a programação orientada a aspectos. Acredito que hoje com as anotaçõe do Spring como @Autowire, você consiga um pouco desse desacoplamento.

Respondendo sua pergunta de forma mais direta: é sim possível interceptar a inicialização da classe com um aspecto para fazer as injeções de dependência, porém isso já tem pronto no Spring de uma forma bem madura!

Recomendo fortemente que você dê uma olhada no artigo que escrevi para a MundoJ 44: "Estratégias para Criação de Objetos Visando Modularidade". Ele trata bastante sobre essas questões!

Espero ter ajudado!

Eduardo Guerra - "É Java na ponta do dedo!"
Desenvolvedor de Frameworks - Pesquisador
Editor Chefe - Revista MundoJ
Professor - Instituto Tecnológico de Aeronáutica
Me siga no Twiter!!! http://twitter.com/emguerra
[Email]
Mr_Arthur
Java Ninja
[Avatar]

Membro desde: 02/02/2007 10:54:04
Mensagens: 285
Localização: Brasília - DF
Offline

Tudo bem, vou reler o artigo.

A minha grande dúvida sobre a injeção de dependencias é que em algum momento eu vou ter que recuperar um objeto pelo spring.
Em que camada eu vou fazer isso?

a grosso modo, em que lugar que eu devo chamar o getBean() do spring?

Por isso que pensei que pudesse ser um aspecto... Essa chamada.

Obrigado!

developer in brasília.
scjp, scwcd, ocpbcd.

@armoucar
Guerr@
Virtual Machine Man
[Avatar]

Membro desde: 03/12/2006 10:32:50
Mensagens: 520
Offline

Mr_Arthur wrote:
a grosso modo, em que lugar que eu devo chamar o getBean() do spring?


Na verdade, procure fazer isso apenas com a classe principal da aplicação e nos outros casos use a injeção de dependências do próprio Spring. No caso de aplicações web, os próprios controllers (dependendo do framework q usar) podem já ser criados pelo Spring e receber injeção.

Em todo caso, você pode criar um factory e encapsular o acesso ao Spring através dela.

Eduardo Guerra - "É Java na ponta do dedo!"
Desenvolvedor de Frameworks - Pesquisador
Editor Chefe - Revista MundoJ
Professor - Instituto Tecnológico de Aeronáutica
Me siga no Twiter!!! http://twitter.com/emguerra
[Email]
Mr_Arthur
Java Ninja
[Avatar]

Membro desde: 02/02/2007 10:54:04
Mensagens: 285
Localização: Brasília - DF
Offline

Guerr@, muito obrigado!

As dúvidas foram esclarecidas.

developer in brasília.
scjp, scwcd, ocpbcd.

@armoucar
wampactimus
Thread.start()
[Avatar]

Membro desde: 24/09/2010 09:10:04
Mensagens: 37
Offline

A linguagem F# é orientada a aspectos

pretendo aprender essa linguagem em breve


eu sou educado, você é ?!!!
Guerr@
Virtual Machine Man
[Avatar]

Membro desde: 03/12/2006 10:32:50
Mensagens: 520
Offline

Escrevi um novo artigo na edição 48 da MundoJ sobre aspectos, dessa vez focando em static crosscutting.

Quem se interessou pelo outro artigo, acho que vale a pena dar uma olhada!

Eduardo Guerra - "É Java na ponta do dedo!"
Desenvolvedor de Frameworks - Pesquisador
Editor Chefe - Revista MundoJ
Professor - Instituto Tecnológico de Aeronáutica
Me siga no Twiter!!! http://twitter.com/emguerra
[Email]
rafaelbtz
Java Ninja
[Avatar]

Membro desde: 29/03/2005 10:53:56
Mensagens: 276
Offline

Guerra, parabéns pelos artigos os 2 estão muito bons, eles me incentivaram a estudar mais sobre AOP.
Estou tentando fazer um Aspect pra gerenciar a transação do Hibernate e tirar aquele famoso BEGIN/COMMIT/ROLLBACK de dentro filtro da WEB.

Pra isso criei um Aspect igual a esse, eu mantenho a abertura da Session do HibernateUtil no Filtro WEB mas os métodos que usam transação eu passei a anotar os métodos com @Transacao:


Ficou legal mas surgiu uma dúvida, tem como resolver o problema de um método anotado com @Transacao ser chamado por outro também anotado por @Transacao, exemplo:


nesse caso se eu chamar o método "transfere"não vai dar certo pois os dois outros métodos estão anotados com Transacao,
Alguem sabe se existe um jeito de fazer isso funcionar ali no meu aspect.

Ou seja quando o método transfere for chamado ele "desabilita" o aspect na chamada do debita e do credita?

Valeu pela ajuda, e de novo parabéns pelos artigos
[Email]
 
Índice dos Fóruns » MundoJ - Artigos, Notícias e Debates
Ir para:   
Powered by JForum 2.1.8 © JForum Team