[英]Spring MVC: Dijkstra's algorithm how to create a bean for graph on startup
現在,每當我在兩點之間求解Dijkstra的算法時,我都必須在運行它時再次創建圖對象。 我想創建一個Spring MVC應用程序,該圖在啟動時作為Bean僅加載一次。
目前,這些是我的班級樣子:
public class Graph {
private final List<Vertex> vertexes;
public Graph(List<Vertex> vertexes) {
this.vertexes = vertexes;
public List<Vertex> getVertexes() {
return vertexes;
}
}
頂點類別:
public class Vertex implements Comparable<Vertex> {
final private Integer id;
final private String name;
public List<Edge> adjacencies;
public double minDistance = Double.POSITIVE_INFINITY;
public Vertex previous;
public Vertex(Integer id, String name) {
this.id = id;
this.name = name;
adjacencies = new LinkedList<Edge>();
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
@Override
public String toString() {
return id+name;
}
public int compareTo(Vertex other) {
return Double.compare(minDistance, other.minDistance);
}
}
邊緣等級:
public class Edge {
private final String id;
private final Vertex destination;
private final double weight;
public Edge(String id, Vertex destination, double weight) {
this.id = id;
this.destination = destination;
this.weight = weight;
}
public String getId() {
return id;
}
public Vertex getDestination() {
return destination;
}
public double getWeight() {
return weight;
}
}
在我的主要方法中,我用274個頂點元素填充“頂點”列表。 然后,Graph類將此列表放入其構造函數中。 如何將單個圖形對象創建為Bean? 這是我所了解的。
<bean id="graph" class="com.fdm.model.Graph" >
<constructor-arg ref="list"/>
</bean>
<util:list id="list" list-class="java.util.ArrayList" />
但是我不確定如何進一步進行。 上面的列表不是頂點類型嗎?
在這里,您已經在應用程序上下文中創建了具有單例作用域的bean。 同樣,您已將引用Vertexes bean列表的構造函數作為連線。
<bean id="graph" class="com.fdm.model.Graph" >
<constructor-arg ref="list"/>
</bean>
春季默認情況下,bean是單例。
在這里,您創建了一個具有id list的列表bean,在這里您可以定義頂點的值類型。 同樣在這種情況下,此列表的范圍為單例如果要定義類型
<util:list id="list" value-type="com.springapp.mvc.Vertex" list-class="java.util.ArrayList" />
您還可以看到以下示例如何在Spring中定義List Bean?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.