java - 如何在Comparator类中autowire一个接口
本文介绍了java - 如何在Comparator类中autowire一个接口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
使用springboot,和mongo的repository,我定义了一个Comparator类,想实现自己的对象的比较方法。代码如下:
package com.story.utils;
import java.util.Comparator;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.story.model.Phase;
import com.story.model.Story;
import com.story.repository.StoryRepository;
@Service
public class PhaseComparator implements Comparator<Phase>{
private String field;
private Story story;
@Autowired
private StoryRepository storyRepository;
public PhaseComparator() {
super();
}
public PhaseComparator (String field) {
this.field = field;
}
@Override
public int compare(Phase phase_1, Phase phase_2) {
if (this.field.equals("createdDate")) {
return phase_1.getCreatedDate() < phase_2.getCreatedDate() ? -1 : 1;
} else {
Story foundStory_1 = this.storyRepository.findOne(phase_1.getStoryId());
Story foundStory_2 = this.storyRepository.findOne(phase_1.getStoryId());
return foundStory_1.getLastUpdatedDate() < foundStory_2.getLastUpdatedDate() ? -1 : 1;
}
}
}
但是,这样的话,storyRepository就是null。
请问应该如何处理呢?
谢谢
解决方案
这样写应该没问题,但是你用的时候必须从 Spring 上下文中去取,比如用 @Autowired
。不知道你是不是这么做的。如果你用的时候临时再去 new PhaseComparator()
,那里面的 storyRepository
肯定是 null。
这篇关于java - 如何在Comparator类中autowire一个接口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文