Ola, Estou desenvolvendo um padrão para versionamento de atributos de um objeto, usando HIBERNATE, esta quase tudo ok, so preciso interceptar os metodos gettes e settes para atribuir as versoes corretas em um determinado instante.
Em pesquisas feitas no Google, descobri que com a CGLIB e possivel interceptar os metodos, mas não consegui enxergar como fazer isso ainda, se alguem puder me ajudar. Agradeço desde ja.
Interceptar metodos de um Java Bean
2 Respostas
Olá
A documentação da CGLIB é um pouco pior do que péssima. É preciso esmiuçar o código fonte, o que eu nem sempre tenho paciência. E por isto não sei usar o CGLIB.
Tem um monte de APIs e frameworks que usam a CGLIB:
- Hibernate usa cglib para gerar proxies para classes persistentes.
- Nanning Aspects (framework AOP)
- Spring
- iBATIS
- ASM
E outras
É mais fácil olhar o código de uma delas ao invés de vagar pelo código da CGLIB.
Por exemplo o Hibernate: criar um projeto no eclipse a partir do ant build.xml, fazer uma busca por cglib e xeretar as classes.
Fazendo isto, percebe-se que o Hibernate também usa alternativamente como bytecode provider um subprojeto do JBoss chamado javassist, que é definida como: Javassist is a class library for dealing with Java bytecode
Pelo pouco que olhei, parece que o Javassist, projeto do japonês Shigero Shiba, tem mais documentação. Tem até um exemplinho em http://www.csg.is.titech.ac.jp/~chiba/javassist/tutorial/tutorial.html
De qualquer forma, seja lá a opção que o atenda, você está intimado a voltar aqui e dizer qual API usou e principalmente dar uma dica de como usou. Combinado?
[]s
Luca