如何自动装配静态接口类
这是我的代码
@Autowired
private static IAuditLogRepository iAuditLogRepository;
public static int saveLog(LogFile logFile){
iAuditLogRepository.saveLog(logFile); // Autowireing fails and iAuditLogRepository is null.
}
我的界面类
public interface IAuditLogRepository {
public Serializable saveLog(LogFile logFile);
}
如何自动连接界面?
我调查了this。我如何为接口类做同样的事情。
答案 0 :(得分:3)
你不能@Autowired
一个静态字段。但是处理这个问题有一个棘手的技巧:
public class Foo {
private static IAuditLogRepository iAuditLogRepository;
@Autowired
private IAuditLogRepository iaRepos;
@PostConstruct
public void someFunction () {
iAuditLogRepository = iaRepos;
}
public static int saveLog(LogFile logFile){
iAuditLogRepository.saveLog(logFile);
}
}
总之,@Autowired
一个实例字段,并在构造对象时将值赋给静态字段。
答案 1 :(得分:0)
由于我不允许发表评论,我会发表回答: 在这里使用单例而不是静态方法。