Spring Autowire一个静态接口类

时间:2014-02-18 10:50:27

标签: java spring static autowired

如何自动装配静态接口类

这是我的代码

@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。我如何为接口类做同样的事情。

2 个答案:

答案 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)

由于我不允许发表评论,我会发表回答: 在这里使用单例而不是静态方法。