Cara autowire antara muka dalam kelas Comparator
大家讲道理
大家讲道理 2017-06-28 09:24:59
0
1
977

Menggunakan springboot dan repositori mongo, saya menentukan kelas Comparator dan mahu melaksanakan kaedah perbandingan objek saya sendiri. Kodnya adalah seperti berikut:

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;
        }
    }

}

Tetapi, dalam kes ini, storyRepository adalah batal.
Bagaimana saya harus menanganinya?
Terima kasih

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(1)
大家讲道理

Menulis seperti ini sepatutnya baik, tetapi anda mesti mendapatkannya daripada konteks Spring apabila menggunakannya Sebagai contoh, menggunakan @Autowired 。不知道你是不是这么做的。如果你用的时候临时再去 new PhaseComparator() ,那里面的 storyRepository pasti akan menjadi batal.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan