Spring Data Solr教程:配置

在我的Spring Data Solr教程的上一部分中,我们了解到Solr提供了一个类似REST的HTTP API,该API可用于向Solr索引添加信息并针对索引数据执行查询。 问题在于,在开发环境中运行单独的Solr实例有点麻烦。

但是,并非所有希望都因此而丧失,因为Solr提供了两个可供我们在应用程序中使用的替代服务器实现。 这些实现如下所述:

  • 嵌入式Solr服务器直接连接到Solr核心。 我们可以将此服务器用于开发目的,但我们还必须记住
    不建议在生产环境中使用它 。 但是,在开发环境中,使用嵌入式Solr服务器仍然是可行的选择。
  • HTTP Solr服务器通过使用HTTP连接到外部Solr服务器。 这是推荐使用Solr搜索服务器的方式,这就是为什么我们应该始终在生产环境中使用它的原因。

此博客文章描述了如何使用Maven获得所需的依赖关系。 我们还将学习配置Spring Data Solr以在开发环境中使用嵌入式Solr服务器,在生产环境中使用HTTP Solr服务器。

注意 :这些博客条目提供了其他信息,可以帮助我们理解此博客条目中描述的概念:

  • 使用Maven运行Solr
  • Spring Data Solr教程:Solr简介

让我们开始吧。

使用Maven获取所需的依赖关系

通过执行以下步骤,我们可以使用Maven获得所需的依赖关系:

  1. 将Spring Milestone Maven存储库添加到POM文件。
  2. 将所需的依赖项添加到pom.xml文件。

下面将更详细地描述这两个步骤。

将Spring Milestone Maven存储库添加到POM文件

通过将以下XML添加到pom.xml文件中,我们可以将Spring里程碑Maven存储库添加到我们的POM文件中:

<repositories><repository><id>spring-milestone</id><name>Spring Milestone Maven Repository</name><url>http://repo.springsource.org/libs-milestone</url></repository>
</repositories>

将所需依赖项添加到POM文件

我们可以按照以下步骤将所需的依赖项添加到POM文件:

  1. 将Spring Data Solr依赖性(版本1.0.0.RC1)添加到POM文件的依赖性部分。
  2. 将Solr核心依赖关系(版本4.1.0)添加到POM文件的依赖关系部分,并排除SLF4J JDK14绑定。 因为嵌入式Solr服务器需要Solr核心,所以如果我们不使用嵌入式Solr服务器,则可以跳过此步骤。

我们可以通过将以下XML添加到POM文件的“依赖关系”部分来完成这些步骤:

<!-- Spring Data Solr -->
<dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-solr</artifactId><version>1.0.0.RC1</version>
</dependency><!-- Required by embedded solr server -->
<dependency><groupId>org.apache.solr</groupId><artifactId>solr-core</artifactId><version>4.1.0</version><exclusions><exclusion><artifactId>slf4j-jdk14</artifactId><groupId>org.slf4j</groupId></exclusion></exclusions>
</dependency>

配置Spring Data Solr

本节描述了我们如何配置Spring Data Solr以在开发和生产环境中使用不同的Solr服务器。 我们将在开发环境中使用嵌入式Solr服务器,在生产环境中使用HTTP Solr服务器。

我们可以按照以下步骤配置Spring Data Solr:

  1. 创建一个属性文件。
  2. 配置嵌入式Solr服务器。
  3. 配置HTTP Solr服务器。
  4. 设置活动bean定义概要文件。

在以下小节中将更详细地描述这些步骤。

创建属性文件

我们的属性文件的名称为application.properties ,我们将使用它来配置两个属性,如下所述:

  • solr.server.url属性指定使用的Solr服务器的URL。 此属性的值用于配置在生产环境中使用的HTTP Solr服务器。
  • solr.solr.home配置Solr的主目录。 此属性的值用于配置开发环境中使用的嵌入式Solr服务器的主目录。

application.properties文件的内容如下所示:

solr.server.url=http://localhost:8983/solr/
solr.solr.home=

配置嵌入式Solr服务器

本小节描述了如何在开发环境中配置Spring Data Solr以使用嵌入式Solr服务器。

Java配置

我们可以按照以下步骤创建一个配置类来配置嵌入式Solr服务器:

  1. 创建一个名为EmbeddedSolrContext的类,并使用@Configuration注释对该类进行注释。
  2. 通过使用@EnableSolrRepositories批注注释该类并配置我们的Solr信息库的根软件包,来启用Spring Data Solr信息库。
  3. @Profile注释注释创建的类,并将其值设置为'dev'。 这意味着除非激活了“ dev”配置文件,否则将忽略此配置类。
  4. @PropertySource批注注释该类,并将其值设置为'classpath:application.properties'。 这将配置属性文件的位置,并向Spring的Environment添加一个PropertySource
  5. 在类中添加一个Environment字段,并使用@Resource注释对该字段进行注释。 注入的环境用于访问我们添加到属性文件中的属性。
  6. 创建一个名为solrServerFactoryBean()方法和注释这种方法与@Bean注解。 此方法的实现创建一个新的EmbeddedSolrServerFactoryBean对象,设置Solr home的值并返回创建的对象。
  7. 创建一个名为solrTemplate()方法和注释这种方法与@Bean注解。 这种方法的实现创建一个新的SolrTemplate对象,并将所使用的SolrServer执行作为构造器参数。

EmbeddedSolrContext类的源代码如下所示:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.core.env.Environment;
import org.springframework.data.solr.core.SolrTemplate;
import org.springframework.data.solr.repository.config.EnableSolrRepositories;
import org.springframework.data.solr.server.support.EmbeddedSolrServerFactoryBean;import javax.annotation.Resource;@Configuration
@EnableSolrRepositories("net.petrikainulainen.spring.datasolr.todo.repository.solr")
@Profile("dev")
@PropertySource("classpath:application.properties")
public class EmbeddedSolrContext {@Resourceprivate Environment environment;@Beanpublic EmbeddedSolrServerFactoryBean solrServerFactoryBean() {EmbeddedSolrServerFactoryBean factory = new EmbeddedSolrServerFactoryBean();factory.setSolrHome(environment.getRequiredProperty("solr.solr.home"));return factory;}@Beanpublic SolrTemplate solrTemplate() throws Exception {return new SolrTemplate(solrServerFactoryBean().getObject());}
}

XML配置

通过执行以下步骤,我们可以为嵌入式Solr服务器创建XML配置文件:

  1. 通过使用上下文名称空间的property-placeholder元素配置使用的属性文件。
  2. 启用S​​olr存储库并使用solr名称空间的repositories元素配置我们的Solr存储库的基本软件包。
  3. 为开发概要文件创建一个bean配置。
  4. 通过使用solr名称空间的Embedded-solr-server元素配置嵌入式Solr服务器Bean。 设置Solr主页的值。
  5. 配置Solr模板bean。 将配置的嵌入式Solr服务器bean设置为构造函数参数。

exampleApplicationContext-solr.xml文件的内容如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:solr="http://www.springframework.org/schema/data/solr"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/data/solr http://www.springframework.org/schema/data/solr/spring-solr.xsd"><context:property-placeholder location="classpath:application.properties"/><!-- Enable Solr repositories and configure repository base package --><solr:repositories base-package="net.petrikainulainen.spring.datasolr.todo.repository.solr"/><!-- Bean definitions for the dev profile --><beans profile="dev"><!-- Configures embedded Solr server --><solr:embedded-solr-server id="solrServer" solrHome="${solr.solr.home}"/><!-- Configures Solr template --><bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate"><constructor-arg index="0" ref="solrServer"/></bean></beans><!-- Bean definitions for the prod profile are omitted -->
</beans>

配置Http Solr服务器

本小节描述了如何配置Spring Data Solr以在生产环境中使用HTTP Solr服务器。

Java配置

我们可以按照以下步骤创建一个配置类来配置HTTP Solr服务器:

  1. 创建一个名为HttpSolrContext的类,并使用@Configuration注释对该类进行注释。
  2. 通过使用@EnableSolrRepositories批注注释该类并配置我们的Solr信息库的根软件包,来启用Spring Data Solr信息库。
  3. @Profile注释注释创建的类,并将其值设置为'prod'。 这意味着除非激活了“ prod”配置文件,否则将忽略此配置类。
  4. @PropertySource批注注释该类,并将其值设置为'classpath:application.properties'。 这将配置属性文件的位置,并向Spring的Environment添加一个PropertySource
  5. 在类中添加一个Environment字段,并使用@Resource注释对该字段进行注释。 注入的环境用于访问我们添加到属性文件中的属性。
  6. 创建一个名为solrServerFactoryBean()方法和注释这种方法与@Bean注解。 此方法的实现创建一个新的HttpSolrServerFactoryBean对象,设置Solr服务器url的值并返回创建的对象。
  7. 创建一个名为solrTemplate()方法和注释这种方法与@Bean注解。 这种方法的实现创建一个新的SolrTemplate对象,并将所使用的SolrServer执行作为构造器参数。

HttpSolrContext类的源代码如下所示:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.core.env.Environment;
import org.springframework.data.solr.core.SolrTemplate;
import org.springframework.data.solr.repository.config.EnableSolrRepositories;
import org.springframework.data.solr.server.support.HttpSolrServerFactoryBean;import javax.annotation.Resource;@Configuration
@EnableSolrRepositories("net.petrikainulainen.spring.datasolr.todo.repository.solr")
@Profile("prod")
@PropertySource("classpath:application.properties")
public class HttpSolrContext {@Resourceprivate Environment environment;@Beanpublic HttpSolrServerFactoryBean solrServerFactoryBean() {HttpSolrServerFactoryBean factory = new HttpSolrServerFactoryBean();factory.setUrl(environment.getRequiredProperty("solr.server.url"));return factory;}@Beanpublic SolrTemplate solrTemplate() throws Exception {return new SolrTemplate(solrServerFactoryBean().getObject());}
}

XML配置

通过执行以下步骤,我们可以为HTTP Solr服务器创建XML配置文件:

  1. 通过使用上下文名称空间的property-placeholder元素配置使用的属性文件。
  2. 启用S​​olr存储库并使用solr名称空间的repositories元素配置我们的Solr存储库的基本软件包。
  3. 为生产概要文件创建一个bean配置。
  4. 使用solr名称空间的solr-server元素配置HTTP Solr服务器Bean。 设置Solr服务器的URL。
  5. 配置Solr模板bean。 将配置的HTTP Solr服务器bean设置为构造函数参数。

exampleApplicationContext-solr.xml文件的内容如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:solr="http://www.springframework.org/schema/data/solr"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/data/solr http://www.springframework.org/schema/data/solr/spring-solr.xsd"><context:property-placeholder location="classpath:application.properties"/><!-- Enable Solr repositories and configure repository base package --><solr:repositories base-package="net.petrikainulainen.spring.datasolr.todo.repository.solr"/><!-- Bean definitions for the dev profile are omitted --><!-- Bean definitions for the prod profile --><beans profile="prod"><!-- Configures HTTP Solr server --><solr:solr-server id="solrServer" url="${solr.server.url}"/><!-- Configures Solr template --><bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate"><constructor-arg index="0" ref="solrServer"/></bean></beans>
</beans>

设置活动Bean定义配置文件

我们可以通过设置spring.profiles.active系统变量的值来选择活动bean定义概要文件。 下面描述了该系统变量的允许值(在示例应用程序的上下文中):

  • 通过将spring.profiles.active系统变量的值设置为'dev',我们可以配置我们的应用程序使其在开发配置文件中运行。
  • 当我们想要配置我们的应用程序以在生产配置文件中运行时,我们必须将spring.profiles.active系统变量的设置为'prod'。

通过执行以下步骤,我们可以将示例应用程序配置为支持两个概要文件:

  1. 将所需的配置文件添加到POM文件。
  2. 为系统属性创建特定于概要文件的属性文件。
  3. 配置Jetty Maven插件。

下面将更详细地描述这些步骤。

将所需的配置文件添加到POM文件

我们可以按照以下步骤将所需的配置文件添加到我们的Maven构建中:

  1. 创建开发环境的配置文件。 将此配置文件的ID设置为“ dev”,并将build.profile.id属性的值设置为“ dev”。
  2. 为生产环境创建配置文件。 将此配置文件的ID设置为“ prod”,并将build.profile.id属性的值设置为“ prod”。

我们的Maven配置文件的配置如下所示:

<profiles><profile><id>dev</id><properties><build.profile.id>dev</build.profile.id></properties></profile><profile><id>prod</id><properties><build.profile.id>prod</build.profile.id></properties></profile>
</profiles>

为系统属性创建特定于配置文件的属性文件

特定于个人档案的属性文件位于个人档案目录的子目录中。 每个子目录的名称都与pom.xml文件中配置的build.profile.id属性的值匹配。

我们可以按照以下步骤为系统属性创建特定于概要文件的属性文件:

  1. profiles / dev目录中创建一个名为system.properties的属性文件。 此属性文件包含开发配置文件的系统属性。
  2. profiles / prod目录中创建一个名为system.properties的属性文件。 此属性文件包含生产概要文件的系统属性。

用于配置开发概要文件的系统属性的属性文件的内容如下所示:

spring.profiles.active=dev

用于配置生产概要文件的系统属性的属性文件的内容如下所示:

spring.profiles.active=prod

配置Jetty Maven插件

我们可以按照以下步骤配置Jetty Maven插件 :

  1. 将Jetty Maven插件的插件声明添加到我们Pom文件的插件部分。
  2. 配置Jetty Maven插件的stopKey和stopPort。
  3. 配置包含使用的系统属性的属性文件的位置。

Jetty Maven插件的配置如下所示:

<plugin><groupId>org.mortbay.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>8.1.5.v20120716</version><configuration><stopKey>todostop</stopKey><stopPort>9999</stopPort><systemPropertiesFile>${project.basedir}/profiles/${build.profile.id}/system.properties</systemPropertiesFile></configuration></plugin>

摘要

现在,我们已经使用Maven成功地获得了必需的依赖关系,并配置了Spring Data Solr。 这篇博客文章教会了我们四件事:

  • 我们学会了使用Maven获得所需的依赖关系。
  • 我们知道我们仅应在开发环境中使用嵌入式Solr服务器,并了解了如何配置Spring Data Solr以使用它。
  • 我们了解到,我们应该始终在生产环境中使用HTTP Solr服务器,并且知道如何配置Spring Data Solr以使用它。
  • 我们知道如何使用Spring Framework的bean定义配置文件为开发和生产环境创建不同的配置。

我的Spring Data Solr教程的下一部分描述了如何向Solr索引添加新文档,如何更新现有文档的信息以及从Solr索引删除文档。

PS。 Github上提供了此博客条目的示例应用程序。

参考: Spring Data Solr教程: Petri Kainulainen博客上的JCG合作伙伴 Petri Kainulainen进行的配置 。

翻译自: https://www.javacodegeeks.com/2013/05/spring-data-solr-tutorial-configuration.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/369060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaAppArguments.java

思路&#xff1a;定义一个String类型的变量&#xff0c;用来接收每次args读取到的值&#xff0c;然后把String转换为int,然后计算输出sum。 流程图&#xff1a; 源代码&#xff1a; 截图&#xff1a; 转载于:https://www.cnblogs.com/xiaohaigege666/p/7635907.html

webpack 引入jquery和第三方jquery插件

1、引入jquery jQuery 直接在 html 中引入&#xff0c;然后在 webpack 中把它配置为全局即可。 index.html: <!DOCTYPE html><html><head><meta charset"UTF-8"><title><% htmlWebpackPlugin.options.title %></title>&…

Spring Data Solr教程:CRUD(差不多)

在我的Spring Data Solr教程的上一部分中&#xff0c;我们学习了如何配置Spring Data Solr。 现在该迈出一步&#xff0c;了解我们如何管理Solr实例中存储的信息。 此博客文章描述了我们如何向Solr索引添加新文档&#xff0c;如何更新现有文档的信息以及如何从索引中删除文档。…

数独项目--关键代码展示:

关键代码展示&#xff1a; //判断该数字在当前数独是否符合要求 int judge(int num, int ple){ int x ple / 9; //x表示数字的纵坐标 int y ple % 9; //y表示数字的横坐标 int qulx x / 3; int quey y / 3; //que表示9宫格的区域 for (int i 0; i < 9; i){ if (…

java svn 版本号_eclipse中的Java文件自动根据svn版本号生成注释

经常在java代码中看到以下的注释($Rev: $Date),是不是很酷,怎么生成的呢&#xff1f;/*** A FilterChain is an object provided by the servlet container to the developer* giving a view into the invocation chain of a filtered request for a resource. Filters* use th…

〖Mysql〗-- python操作数据库

【数据库进阶】 python 操作MYSQL数据库主要有两种方式&#xff1a;    使用原生模块&#xff1a;pymysql  ORM框架&#xff1a;SQLAchemy 一、pymysql 1.1下载安装模块 12第一种&#xff1a;cmd下&#xff1a;执行命令下载安装&#xff1a;pip3 install pymysql第二种&…

Sublime Text3—Code Snippets(自定义代码片段)

摘要 程序员总是会不断的重复写一些简单的代码片段&#xff0c;为了提高编码效率&#xff0c;我们可以把经常用到的代码保存起来再调用。 平时用sublime安装各种插件&#xff0c;使用Tab键快速补全&#xff0c;便是snippets&#xff08;可译为代码片段&#xff09;的一种。 …

JBoss AS7 JNDI和EJB 3.1命名更改

由于“功能培训”继续前进&#xff0c;而我们又没有使软件堆栈保持最新&#xff0c;因此我们的团队发现自己处于迁移的不可行位置&#xff1a; JBoss 4.2.3到AS 7.1.x&#xff08;当前为7.1.1&#xff09; EJB 2.1到EJB 3.1 休眠2到休眠3或4 以快速的方式。 我的意思是&…

static关键字(修饰函数、局部变量、全局变量)

在C语言中&#xff0c;static的字面意思很容易把我们导入歧途&#xff0c;其实它的作用有三条。 &#xff08;1&#xff09;先来介绍它的第一条也是最重要的一条&#xff1a;隐藏。 当我们同时编译多个文件时&#xff0c;所有未加static前缀的全局变量和函数都具有全局可见性。…

POJ 2236 - Wireless Network ( 并查集 )

题意 一个计算机网络里的计算机都坏了, 现在有两种操作, “O p”代表修复了p机器, “S p q”代表检查 p, q 两台机器是否连接( 直线距离<d或者中间有距离<d的用来联通的机器 ) 思路 比赛的时候愣是没读清楚题目意思, 还以为是什么搜索, 瞎瘠薄做了个MLE 没料到居然是个并…

Apriori 关联分析算法原理分析与代码实现

转自穆晨 阅读目录 前言关联分析领域的一些概念Apriori算法基本原理频繁项集检索实现思路与实现代码关联规则学习实现思路与实现代码小结回到顶部前言 想必大家都听过数据挖掘领域那个经典的故事 - "啤酒与尿布" 的故事。 那么&#xff0c;具体是怎么从海量销售信息中…

Spring JpaRepository示例(内存中)

这篇文章描述了一个使用内存中HSQL数据库的简单Spring JpaRepository示例。 该代码示例可从GitHub的Spring-JpaRepository目录中获得。 它基于带有注释的Spring-MVC-示例和此处提供的信息 。 JPA资料库 我们为该示例实现一个虚拟bean&#xff1a; Entity AutoProperty public…

java url接口_javaweb 后台使用url接口

String GET_URL"https://wx.hguard.cn:8075/queryProfiledataAction.action?phone"phone"&beginnum"beginnum"&pagesize"pagesize"&sign"newsignString;try {URL url new URL(GET_URL); // 把字符串转换为URL请求地址…

数据分析 - 残酷的世界

数据分析 - 残酷的世界 可视化作品链接地址&#xff1a;http://reinhardhsu.com/game.html 概要 最近读了比尔盖茨的夏日书单中的荐书《乡下人的悲歌》&#xff0c; 书中描述了贫穷、毒品和一系列陋习&#xff0c;像遗传病一样&#xff0c;困扰着一代又一代的美国底层人民…

burpsuite破解版

来源&#xff1a;http://www.vuln.cn/8847 转载于:https://www.cnblogs.com/shengulong/p/8819072.html

Eclipse Juno上带有GlassFish的JavaEE 7

Java EE 7很热。 前四个JSR最近通过了最终批准选票&#xff0c;与此同时GlassFish 4达到了升级版83。 如果您关注我的博客&#xff0c;那么您将了解NetBeans的大部分工作。 但是我确实认识到&#xff0c;那里还有其他IDE用户&#xff0c;他们也有权试用最新和最出色的企业Java。…

photoshop 切片工具进行切图

1、使用切片工具切图 2、存储为web所用格式 3、选择图片格式 4、只保存切片&#xff08;选择所有用户切片&#xff09; 5、查看&#xff1a;

HubSwitch工作原理,冲突域,以太网帧结构笔记(2017年10月9日 11:15:46)

一、冲突域 网络中发送的主要是应用程序产生的数据。 数据流需要网络设备进行数据转发&#xff0c;任何应用程序在发送数据流之前都要进行数据封装。 比如&#xff1a;SMAC DMAC | SIP DIP | 报头&#xff08;Source Port、Destination Port&#xff09;| QQ的数据载荷&#xf…

在IDEA中实战Git

工作中多人使用版本控制软件协作开发&#xff0c;常见的应用场景归纳如下&#xff1a; 假设小组中有两个人&#xff0c;组长小张&#xff0c;组员小袁 场景一&#xff1a;小张创建项目并提交到远程Git仓库 场景二&#xff1a;小袁从远程Git仓库上获取项目源码 场景三&#xff1…

java抽象类异常_求教JAVA里面的错误继承抽象类我都已经看傻了。

求教JAVA里面的错误我都已经看傻了。我思路是想创建个新对象(经理)并打印他的所有属性&#xff0c;外加上work一个干活的属性。自己看了半天改了半天都不行跪求高手给我改改并讲讲。abstractcl...求教JAVA里面的错误我都已经看傻了。我思路是想创建个新对象(经理)并打印他的所有…