2017-07-06 68 views
-1

如何在构造函数中执行下面的等效操作,是否可以通过Java代码实现?使用弹簧对比较器初始化PriorityQueue

//non DI code 
PriorityQueue<Object> queue = new PriorityQueue<Object>(10, 
      Comparator.comparing(Object::getOrder) 
      .thenComparing(Object::getDate)); 

我想将它注入到构造像下面

@Autowired 
public CustomPriorityQueue(PriorityQueue<Object> queue) 
{ 
    this.queue = queue; 
} 
+1

我不明白内@Bean方法。只需创建一个返回'queue'的'@ Bean'方法。 –

+0

是的,谢谢,我与比较器实例部分混淆 –

回答

0

事实上,我需要一个@Configuration类

@SpringBootApplication 
@ComponentScan 
public class Application { 

public static void main(String[] args) { 

    SpringApplication.run(Application.class, args); 

} 


@Bean 
@Primary 
public PriorityQueue<WorkOrder> priorityQueue() { 

    PriorityQueue<WorkOrder> queue = new PriorityQueue<WorkOrder>(10, 
      Comparator.comparing(WorkOrder::getRank).thenComparing(
        WorkOrder::getDatetime)); 

    return queue; 
} 
}