Spring整合Solrj8時,建立鏈結的配置

2021-09-17 04:05:35 字數 2238 閱讀 5667

最近想把手頭的solr4換成solr8,就遇到各種各樣的問題。因為solrj4和solrj8建立鏈結用的類不同,所以spring配置檔案也要修改,本想偷懶網上找個solrj7的配置用,結果看了倆:

咋回事啊?為啥給屬性「builder」乙個字串「builder」?算了再看看別的吧

下面這個原文還附了一段原始碼分析,大概是這樣:

構造方法使用httpsolrclient(builder builder),builder是作為乙個引數傳入的builder物件。再看builder,builder(string basesolrurl),「basesolrurl」就是個字串。原文作者稱是可以使用的,但是看起來總覺得很奇怪,最後我還是去翻了原始碼。

首先找httpsolrclient構造器(在solrj5+版本中,類httpsolrserver遷移至httpsolrclient)

}可以看到有三個構造器,但是兩個已經被不推薦使用(棄用)了,於是看httpsolrclient(builder builder),發現所需的物件builder是內部類builder建立的,找builder構造器:

public builder() 

public builder(string basesolrurl)

1、指定solr的特定核心,在solrurl之後加速核心名,例:

solrclient client = new httpsolrclient.builder("http://my-solr-server:8983/solr/core1").build();
效果:不可以選擇其他核心查詢,但是在執行請求時不需要再宣告指定核心,例:

queryresponse resp = client.query(new solrquery("*:*"));
2、指定solr的url路徑,不指定核心,例:

solrclient client = new httpsolrclient.builder("http://my-solr-server:8983/solr").build();
效果:更加靈活的運用,可以向任意核心傳送請求,但是請求必須宣告核心名,例:

queryresponse resp = client.query("core1", new solrquery("*:*"));

既然這樣那目的就很明確了,先給basesolrurl乙個solr的url建立builder,再把這個builder賦給httpsolrclient的構造方法來取得物件,那麼spring的xml就該這麼配置:

成功!

整合struts和spring時

連線點 struts2的action由spring產生 大致如下 首先加入各自所需的jar包,連線時要加入struts2 spring plugin x.x.x.jar 1.修改web.xml加入struts的filter struts2 org.apache.struts2.dispatcher....

spring和hibernate整合時無法自動建表

在使用spring整合hibernate時候 如下 property name datasource ref datasource property name hibernateproperties props prop key hibernate.dialect org.hibernate.dia...

iBatis與Spring整合時的批處理釋疑

在看ibatis的文件時,其描述的典型批處理語句如下 try finally 這段語句,如果由ibatis自己來管理事務,相信大家沒有使用任何的疑慮。但是,如果已經由spring來託管事務,這段語句是不是有問題呢?其實,我開始的時候這種疑問是非常強烈的,所以,有時我會這樣寫 sqlmap.start...