@autowired em classes estáticas
Este é um projeto Spring MVC com o Hibernate. Eu estou tentando fazer uma classe Logger, que é responsável por inserir logs no banco de dados. Outras classes apenas chamam métodos apropriados com alguns atributos e esta classe deve fazer toda a magia. Por natureza, deve ser uma classe com métodos estáticos, mas isso causa problemas com o objeto dao autowiering.
public class StatisticLogger {
@Autowired
static Dao dao;
public static void AddLoginEvent(LogStatisticBean user){
//TODO code it god damn it
}
public static void AddDocumentEvent(LogStatisticBean user, Document document, DocumentActionFlags actionPerformed){
//TODO code it god damn it
}
public static void addErrorLog(Exception e, String page, HashMap<String, Object> parameters){
ExceptionLogBean elb=new ExceptionLogBean();
elb.setStuntDescription(e);
elb.setSourcePage(page);
elb.setParameters(parameters);
if(dao!=null){ //BUT DAO IS NULL
dao.saveOrUpdateEntity(elb);
}
}
Como fazer isso certo? O que devo fazer para não tornar o objeto dao null? Eu sei que eu poderia passar isso como um parâmetro de método, mas isso não é muito bom. Eu estou supondo que autowired não pode trabalhar em objetos estáticos, porque eles são criados para início do mecanismo de autowiering ainda não é criado.