Boa tarde galera!!!
Estou tentando converter meu “injetor” para usar as annotations do aspectj, pois criei um mini injetor de depencia ele ficou assim
public aspect InjetorObjetos {
pointcut inject(Object s) :target(s) && (get(@Injetor * *.*));
before(Object obj):inject(obj){
try {
System.out.println("passei aqui");
String nomeInstancia = null;
Field atributoClasse = obj.getClass().getDeclaredField(thisJoinPoint.getSignature().getName());
atributoClasse.setAccessible(true);
Object objIn = atributoClasse.get(obj);
if (objIn == null) {
if (atributoClasse.isAnnotationPresent(Injetor.class)) {
Injetor in = atributoClasse.getAnnotation(Injetor.class);
if (in.instancia().equals("")) {
nomeInstancia = atributoClasse.getName();
} else {
nomeInstancia = in.instancia();
}
atributoClasse.setAccessible(true);
try {
Object valor = null; // aqui eu busco de um pool de objetos
atributoClasse.set(obj, valor);
} catch (IllegalStateException e) {
//TODO fazer aqui seu mecanismo de Log
} catch (Exception e) {
//TODO fazer aqui seu mecanismo de Log
}
}
}
} catch (Exception e) {
//TODO fazer aqui seu mecanismo de Log
throw new RuntimeException(e);
}
}
}
agora estou tentando converter ele para usar apenas annotations, pois estou tendo problemas. Os outros projetos que usam o framework, nao “ativam” o aspecto na linguagem do aspectJ, entao criei um aspecto usando as annotations do aspectJ vejam:
@Aspect
public class Injetor2 {
@Pointcut("@annotation(Injetor)")
public void userUpdatingOperation() {
}
@Before("userUpdatingOperation()")
public void doAccessCheck() {
System.out.println("passei aqui 33");
}
}
Há uma annotation chamada “Injetor” vejam o codigo:
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface Injetor {
String instancia() default "";
}
Gostaria de saber como acessar o objeto que foi anotado com a anotation como no aspecto normal (com extensao “aj”) em annotations…
Obrigado e até mais.