最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring-Boot 集成Solr客戶端的詳細(xì)步驟

 更新時間:2017年11月04日 09:30:41   作者:小雨轉(zhuǎn)暴雨  
本篇文章主要介紹了Spring-Boot 集成Solr客戶端的詳細(xì)步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

Solr 是基于 Lucene 的全文檢索服務(wù)器,可配置、可擴(kuò)展,并對索引和搜索性能進(jìn)行了優(yōu)化。Solr 多用于電子商務(wù)網(wǎng)站、門戶、論壇這類網(wǎng)站的站內(nèi)搜索。Solr 可以獨立運行在 Jetty、Tomcat 等這些 Servlet 容器中。Solr 索引的實現(xiàn)非常簡單,用 POST 方法去向 Solr服務(wù)器發(fā)送一個描述 Field 及其內(nèi)容的 JSON 文檔,Solr 根據(jù) JSON 文件增刪改索引。Solr 搜索只需要發(fā)送 HTTP GET 請求,然后對 Solr 返回 JSON 格式的查詢結(jié)果進(jìn)行解析,組織頁面布局。Solr 不提供構(gòu)建 UI 的功能,Solr提供了一個管理界面,通過管理界面可以查詢 Solr 的配置和運行情況。

tips: IDEA的快速查找類快捷鍵 (連續(xù)按兩次 shift 鍵)

1) maven配置:

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.2.RELEASE</version>
  </parent>

  <properties>
    <spring.data.solr.version>2.1.1.RELEASE</spring.data.solr.version>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-solr</artifactId>
        <version>${spring.data.solr.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <!--添加Web依賴, 使項目變成web項目-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-solr</artifactId>
    </dependency>

    <!--test-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
  </dependencies>

2) SpringBoot 快速啟動

@SpringBootApplication
@EnableAutoConfiguration
public class AppMain {

  public static void main(String[] args) {
    SpringApplication.run(AppMain.class, args);
  }
}

可能遇見的問題:

1. 一般spring-boot項目的啟動類都放在項目的根路徑下, 這樣可以不用配置@ComponentScan注解來掃描相應(yīng)的類, 如果遇到無法讀取配置類屬性的情況, 首先考慮這個因素

3) 在resources下新建application.properties, 完成solr的基本配置

spring.data.solr.host=http://127.0.0.1:8983/solr

這個屬性配置的是solr服務(wù)器的訪問地址, 因為本項目是作為客戶端來訪問solr服務(wù)器, 所以不用做更多的配置

這個屬性是是通過@ConfigurationProperties("spring.data.solr")讀取出來的, 默認(rèn)被讀取到 SolrProperties.class 中 詳情請使用類查找器查看該類

4) 新建一個Controller用來查詢Solr服務(wù)器數(shù)據(jù)

@RestController
public class SolrController {

  @Autowired
  private SolrClient client;

  @RequestMapping("/")
  public String testSolr() throws IOException, SolrServerException {
    SolrDocument document = client.getById("test", "fe7a5124-d75b-40b2-93fe-5555512ea6d2");
    System.out.println(document);
    return document.toString();
  }
}

數(shù)據(jù)是我提前導(dǎo)入的, 這里使用ID查詢結(jié)果
SolrDocument{goodsId=[129831], id=fe7a5124-d75b-40b2-93fe-5555512ea6d2, _version_=1562570354094768128}

5) solr集成結(jié)束, 但問題來了

問題1: 為什么沒有配置SolrClient, 但卻自動注入成功了呢?
問題2: 它是在什么地方被注入到BeanFactory的? (@Autowired能夠注入成功說明該類存在于其中)
問題3: 能不能自己配置?
問題4: 有沒有必要自己配置?

6) 解決問題1, 和問題2:

SolrAutoConfiguration 是Solr自動配置的類, 在Spring-Boot啟動的時候會自動加載屬性, 注入SolrClient類

@Configuration
@ConditionalOnClass({ HttpSolrClient.class, CloudSolrClient.class })
@EnableConfigurationProperties(SolrProperties.class)
public class SolrAutoConfiguration {

  private final SolrProperties properties;

  private SolrClient solrClient;

  public SolrAutoConfiguration(SolrProperties properties) {
    this.properties = properties;
  }

  @Bean
  @ConditionalOnMissingBean
  public SolrClient solrClient() {
    this.solrClient = createSolrClient();
    return this.solrClient;
  }

  private SolrClient createSolrClient() {
    if (StringUtils.hasText(this.properties.getZkHost())) {
      return new CloudSolrClient(this.properties.getZkHost());
    }
    return new HttpSolrClient(this.properties.getHost());
  }

}

當(dāng)我們引入

<dependency>
  <groupId>org.springframework.data</groupId>
  <artifactId>spring-data-solr</artifactId>
  <version>${spring.data.solr.version}</version>
</dependency>

這個自動配置就會因為我們在AppMain.java上配置的@EnableAutoConfiguration注解生效, 這樣就會自動注入Bean了

7) 解決問題3, 問題4

肯定是可以自己配置的, 配置方式也非常簡單
只需要自己編寫一個類, 使用@Configuration注解, 并且配置一個@Bean, 返回SolrClient就可以了

@Configuration
public class SolrClientConfiguration {

  @Autowired
  private Environment environment;

  @Bean
  public SolrClient solrClient() {
    System.out.println("自定義配置SolrClient");
    return new HttpSolrClient(environment.getRequiredProperty("spring.data.solr.host"));
  }
}

啟動結(jié)果

2017-03-23 10:32:17.414 INFO 10359 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean  : Mapping filter: 'requestContextFilter' to: [/*]
自定義配置SolrClient
2017-03-23 10:32:18.178 INFO 10359 --- [      main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@160f0c04: startup date [Thu Mar 23 10:32:15 CST 2017]; root of context hierarchy

也就是自定義配置完成

我建議不使用自定義的配置方式, 因為它原有的自動裝配已經(jīng)非常方便了. 并且可以根據(jù)是否配置zookeeper來判斷使用單機(jī)版或者集群版.

現(xiàn)在能使用SolrClient了, 剩下的是需要封裝工具類, 完成客戶端的查詢和更新操作就OK了

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java使用三層架構(gòu)實現(xiàn)電影購票系統(tǒng)

    java使用三層架構(gòu)實現(xiàn)電影購票系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java使用三層架構(gòu)實現(xiàn)電影購票系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Spring Boot+Jpa多數(shù)據(jù)源配置的完整步驟

    Spring Boot+Jpa多數(shù)據(jù)源配置的完整步驟

    這篇文章主要給大家介紹了關(guān)于Spring Boot+Jpa多數(shù)據(jù)源配置的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • SpringCloud服務(wù)實現(xiàn)同時使用eureka和nacos方法

    SpringCloud服務(wù)實現(xiàn)同時使用eureka和nacos方法

    這篇文章主要介紹了SpringCloud服務(wù)實現(xiàn)同時使用eureka和nacos方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • Java隊列數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)

    Java隊列數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)

    這篇文章主要介紹了Java隊列數(shù)據(jù)結(jié)構(gòu)的實現(xiàn),隊列是一種特殊的線性表,只允許在表的隊頭進(jìn)行刪除操作,在表的后端進(jìn)行插入操作,隊列是一個有序表先進(jìn)先出,想了解更多相關(guān)資料的小伙伴可以參考下面文章的詳細(xì)內(nèi)容
    2021-12-12
  • Spring實戰(zhàn)之注入集合值操作示例

    Spring實戰(zhàn)之注入集合值操作示例

    這篇文章主要介紹了Spring實戰(zhàn)之注入集合值操作,結(jié)合實例形式分析了Spring注入集合值相關(guān)配置及使用操作技巧,需要的朋友可以參考下
    2019-11-11
  • springboot創(chuàng)建文件夾失敗的解決

    springboot創(chuàng)建文件夾失敗的解決

    這篇文章主要介紹了springboot創(chuàng)建文件夾失敗的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java實戰(zhàn)項目 健身管理系統(tǒng)

    Java實戰(zhàn)項目 健身管理系統(tǒng)

    本文是一個Java語言編寫的實戰(zhàn)項目,是一個健身管理系統(tǒng),主要用到了ssm+springboot等技術(shù),技術(shù)含量筆記高,感興趣的童鞋跟著小編往下看吧
    2021-09-09
  • 實現(xiàn)java文章點擊量記錄實例

    實現(xiàn)java文章點擊量記錄實例

    這篇文章主要為大家介紹了實現(xiàn)java文章點擊量記錄實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 詳解Java發(fā)送HTTP請求

    詳解Java發(fā)送HTTP請求

    這篇文章主要介紹了Java發(fā)送HTTP請求,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 關(guān)于Spring的AnnotationAwareAspectJAutoProxyCreator類解析

    關(guān)于Spring的AnnotationAwareAspectJAutoProxyCreator類解析

    這篇文章主要介紹了關(guān)于Spring的AnnotationAwareAspectJAutoProxyCreator類解析,Spring是一個開源免費的框架 , 容器,是一個輕量級的框架 ,需要的朋友可以參考下
    2023-05-05

最新評論

兴文县| 民勤县| 金川县| 玉树县| 沂南县| 灵宝市| 安陆市| 泸州市| 苍溪县| 义马市| 古田县| 富川| 金平| 军事| 邯郸县| 钟祥市| 平安县| 福贡县| 渭源县| 璧山县| 茶陵县| 太仓市| 胶南市| 于都县| 惠来县| 台东县| 沭阳县| 卢氏县| 礼泉县| 乌鲁木齐市| 唐山市| 雅安市| 称多县| 宁蒗| 巴彦县| 安龙县| 商都县| 大关县| 新绛县| 西华县| 普洱|