Acessar Spring Context em um Aspect

Oi!

Após pensar muito, bater muita cabeça e ler este tópico inteiro, decidi usar aspectos (AdpectJ) para injetar meus repositórios nas entidades (nos casos em que isso é necessário, claro).

obs: Estou usando Spring pra fazer as injeções em tudo o que for contextualizado.

Não quero gerar flames acerca de DDD, por favor. Se você discorda da necessidade de injetar repositories nas entities, assuma que eu quero fazer isso apenas por teimosia :stuck_out_tongue:

Vejam um protótipo de aspecto para este fim (copiado do tópico citado)

package br.com.tests.model.repositories.aop;

import br.com.tests.model.entities.Entity;

public aspect RepositoryInjector {
	pointcut inject(Object s) :target(s) && get(* br.com.tests.model.entities..*.*);

	before(Object obj):inject(obj){
		Entity entity = (Entity)obj;
		entity.setRepository(?????????);
	}

}

Bem… no lugar daquelas interrogações no método setRepository eu não gostaria de colocar algo como new Repository(), por isso criei esse tópico. É possível acessar o context dalí? Alguém sabe como? Existe outra maneira de fazer isso sem precisar acessar o context?

bem… não sei se devo mas… se alguém tiver uma boa opção pra fazer isso sem o aspecto ficarei muito feliz em saber.

Valeu! []s

Esquecí de dizer que estou utilizando JSF!

De qualquer maneira, encontrei uma solução:

package br.com.tests.model.repositories.aop;

import br.com.tests.model.entities.Entity;

public aspect RepositoryInjector {
	pointcut inject(Object s) :target(s) && get(* br.com.tests.model.entities..*.*);

	before(Object obj):inject(obj){
		Entity entity = (Entity)obj;
		ApplicationContext ctx = FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance());
		Repository repository = (Repository) ctx.getBean("repository");
		entity.setRepository(repository);
	}

}	

Mas se alguém souber de uma maneira mais interessante, eu gostaria muito de saber.

[]s