maven项目下solr和spring的整合配置详解

前言:

solr和spring整合其实很简单,只要注意导入依赖的配置文件即可。废话不多说,上代码。

第一步:编写maven项目的pom文件,导入依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">;
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.millery.spring_solr</groupId>
 <artifactId>spring-solr</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>war</packaging> 

 <!-- 添加依赖 -->
 <dependencies> 

  <!-- Spring依赖 -->
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-context</artifactId>
   <version>4.1.3.RELEASE</version>
  </dependency>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-beans</artifactId>
   <version>4.1.3.RELEASE</version>
  </dependency>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-jdbc</artifactId>
   <version>4.1.3.RELEASE</version>
  </dependency>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-aspects</artifactId>
   <version>4.1.3.RELEASE</version>
  </dependency> 

  <!--solr客户端solrj的依赖 -->
  <dependency>
   <groupId>org.apache.solr</groupId>
   <artifactId>solr-solrj</artifactId>
   <version>4.10.1</version>
  </dependency> 

  <!-- junit测试 -->
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.10</version>
    <scope>test</scope>
   </dependency> 

 </dependencies>
</project> 

第二步:编写applicationContext-solr.xml和solr.properties配置文件

applicationContext-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:p="http://www.springframework.org/schema/p"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:mvc="http://www.springframework.org/schema/mvc"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">; 

 <!--定义solr的server-->
 <bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
  <constructor-arg index="0" value="${solr.Url}"/>
 <!-- 设置响应解析器 -->
  <property name="parser">
   <bean class="org.apache.solr.client.solrj.impl.XMLResponseParser"/>
  </property>
  <!-- 设置重试次数-->
  <property name="maxRetries" value="${solr.maxRetries}"/>
  <!-- 建立连接的最长时间 -->
  <property name="connectionTimeout" value="${solr.connectionTimeout}"/>
 </bean> 

</beans>

solr.properties配置文件的内容:

solr.Url=http://127.0.0.1:8983/millery
solr.maxRetries=1
solr.connectionTimeout=500 

第三步:编写applicationContext.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:p="http://www.springframework.org/schema/p"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:mvc="http://www.springframework.org/schema/mvc"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">; 

 <!--配置service的包扫描,自动注入Service -->
 <context:component-scan base-package="com.millery" /> 

 <!-- 使用spring自带的占位符替换功能 -->
 <bean
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <!-- 允许JVM参数覆盖 -->
  <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
  <!-- 忽略没有找到的资源文件 -->
  <property name="ignoreResourceNotFound" value="true" />
  <!-- 配置资源文件 -->
  <property name="locations">
   <list>
    <value>classpath:solr.properties</value>
   </list>
  </property>
<a target=_blank href="http://write.blog.csdn.net/User.java" rel="external nofollow" ><span style="color: rgb(0, 0, 255);"></span></a><pre name="code" class="html">
</bean>
</beans> 

第四步:写测试代码

User实体类:

package com.millery.spring_solr.pojo; 

/**
 *
 * @项目名称:spring-solr
 @类名称:User
 @类描述:用户实体类 br/> * @创建人:millery
 @创建时间:2015年11月5日 上午10:42:43
 @version: br/> */
public class User { 

 private Long id;// 用户编号
 private String username;// 用户名
 private String loginPwd;// 用户登录密码
 private String email;// 用户邮箱 

 public Long getId() {
  return id;
 } 

 public void setId(Long id) {
  this.id = id;
 } 

 public String getUsername() {
  return username;
 } 

 public void setUsername(String username) {
  this.username = username;
 } 

 public String getLoginPwd() {
  return loginPwd;
 } 

 public void setLoginPwd(String loginPwd) {
  this.loginPwd = loginPwd;
 } 

 public String getEmail() {
  return email;
 } 

 public void setEmail(String email) {
  this.email = email;
 } 

 @Override
 public String toString() {
  return "User [id=" + id + ", username=" + username + ", loginPwd="
    + loginPwd + ", email=" + email + "]";
 }
}

SpringSolr类:

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; 

import com.millery.spring_solr.pojo.User; 

/**
 *
 * @项目名称:spring-solr
br/>
*/
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; 

import com.millery.spring_solr.pojo.User; 

/**
 *
 * @项目名称:spring-solr
 @类名称:SpringSolrTest
 @类描述:测试类 br/> * @创建人:millery
 @创建时间:2015年11月5日 上午10:48:57
 @version: br/> */
@Component
public class SpringSolr { br/>
 @Autowired
 private HttpSolrServer httpSolrServer; 

 public User getUser(Long id) throws SolrServerException { 

  //创建查询条件
  SolrQuery query = new SolrQuery();
  query.setQuery("id:" + id); 

  //查询并返回结果
  QueryResponse queryResponse = this.httpSolrServer.query(query);
  return (User) queryResponse.getBeans(User.class);
 }
} 

SpringSolrTest类:

SpringSolrTest.java

package com.millery.spring_solr.test;
import org.apache.solr.client.solrj.SolrServerException;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.millery.spring_solr.pojo.User;
public class SpringSolrTest {
private SpringSolr springSolr;br/>@Before
public void setUp() throws Exception {
// 初始化Spring容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
"applicationContext.xml", "applicationContext-solr.xml");
//获取对象
this.springSolr = applicationContext.getBean(SpringSolr.class);br/>}
@Test
public void test() throws SolrServerException {
// 测试方法,输出结果
User user = springSolr.getUser((long) 1);
System.out.println(user);
}
}

运行代码结果:

org.apache.solr.client.solrj.SolrServerException: IOException occured when talking to server at: http://127.0.0.1:8983/millery

这里抛异常时因为我本机上没有安装solr,无法连接solr,此时说明代码已经没有问题,可以执行查询操作了。

总结建工程时存在的小问题:

1、在建立工程时打包方式使用jar和war的选择可能存在纠结,只想说不用纠结,选哪个都是一样的。

2、在工程pom.xml配置文件配置完成后,可能会出现下图的报错问题,此时就需要简单的处理一下就可以了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解spring中使用solr的代码实现

    在介绍solr的使用方法之前,我们需要安装solr的服务端集群.基本上就是安装zookeeper,tomcat,jdk,solr,然后按照需要配置三者的配置文件即可.由于本人并没有具体操作过如何进行solr集群的搭建.所以关于如何搭建solr集群,读者可以去网上查看其它资料,有很多可以借鉴.这里只介绍搭建完solr集群之后,我们客户端是如何访问solr集群的. 之前介绍过,spring封装nosql和sql数据库的使用,都是通过xxxTemplate.solr也不例外. 我们需要引入solr的j

  • SpringBoot整合Redis、ApachSolr和SpringSession的示例

    本文介绍了SpringBoot整合Redis.ApachSolr和SpringSession,分享给大家,具体如下: 一.简介 SpringBoot自从问世以来,以其方便的配置受到了广大开发者的青睐.它提供了各种starter简化很多繁琐的配置.SpringBoot整合Druid.Mybatis已经司空见惯,在这里就不详细介绍了.今天我们要介绍的是使用SpringBoot整合Redis.ApacheSolr和SpringSession. 二.SpringBoot整合Redis Redis是大家比

  • Spring-Boot 集成Solr客户端的详细步骤

    Solr 是基于 Lucene 的全文检索服务器,可配置.可扩展,并对索引和搜索性能进行了优化.Solr 多用于电子商务网站.门户.论坛这类网站的站内搜索.Solr 可以独立运行在 Jetty.Tomcat 等这些 Servlet 容器中.Solr 索引的实现非常简单,用 POST 方法去向 Solr服务器发送一个描述 Field 及其内容的 JSON 文档,Solr 根据 JSON 文件增删改索引.Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回 JSON 格式的查询结

  • maven项目下solr和spring的整合配置详解

    前言: solr和spring整合其实很简单,只要注意导入依赖的配置文件即可.废话不多说,上代码. 第一步:编写maven项目的pom文件,导入依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM

  • Spring boot整合security详解

    目录 前言 配置依赖 用户配置 1.内存用户存储 2.数据库用户存储 3.LDAP用户存储 4.自定义用户存储 拦截配置 前言 在进行框架选型时最常用的选择就是在Spring security 和Shiro中进行抉择,Spring security 和 shiro 一样,都具有认证.授权.加密等用于权限管理的功能.但是对于Springboot而言,Spring Security比Shiro更合适一些,他们都是Spring生态里的内容,并且在使用上Spring boot只需要引入Security就

  • Spring Boot整合Thymeleaf详解

    目录 Thymeleaf 基本介绍 基本语法 th:text文本替换 th:if和th:unless文本替换 th:each foreach循环 th:id.th:value.th:checked等(和form表单相关) 整合Thymeleaf 基本配置 三层架构 删除操作 编辑操作 用户登录 用户注销 点击注销用户 Thymeleaf 基本介绍 Spring Boot 官方推荐使用 Thymeleaf 作为其模板引擎.SpringBoot 为 Thymeleaf 提供了一系列默认配置,并且为T

  • Spring Java-based容器配置详解

    装Java-based的配置 使用 @Import 注解 跟在Spring XML文件中使用<import>元素添加模块化的配置类似,@Import注解允许你加载其他配置类中的@Bean定义: @Configuration public class ConfigA { @Bean public A a() { return new A(); } } @Configuration @Import(ConfigA.class) public class ConfigB { @Bean public

  • Spring Boot事务配置详解

    1.在启动主类添加注解:@EnableTransactionManagement 来启用注解式事务管理,相当于之前在xml中配置的<tx:annotation-driven />注解驱动. 2.在需要事务的类或者方法上面添加@Transactional() 注解,里面可以配置需要的粒度: 这么多东西提供配置: Isolation :隔离级别 隔离级别是指若干个并发的事务之间的隔离程度,与我们开发时候主要相关的场景包括:脏读取.重复读.幻读. 我们可以看 org.springframework.

  • Spring Cloud Ribbon配置详解

    本节我们主要介绍 Ribbon 的一些常用配置和配置 Ribbon 的两种方式. 常用配置 1. 禁用 Eureka 当我们在 RestTemplate 上添加 @LoadBalanced 注解后,就可以用服务名称来调用接口了,当有多个服务的时候,还能做负载均衡. 这是因为 Eureka 中的服务信息已经被拉取到了客户端本地,如果我们不想和 Eureka 集成,可以通过下面的配置方法将其禁用. # 禁用 Eureka ribbon.eureka.enabled=false 当我们禁用了 Eure

  • spring.datasource.schema配置详解

    目录 1.现将sql文件放在resources下的sql文件夹下 2.新建数据库mybatis 3.配置yml 用springboot2.0执行sql脚本: 1.现将sql文件放在resources下的sql文件夹下 2.新建数据库mybatis 3.配置yml spring: datasource: # 数据源基本配置 username: root password: 123 driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql

  • springboot2.5.0和redis整合配置详解

    基本概况 为什么使用缓存 缓存是在内存中存储的数据备份,当数据没有发生本质变化时 就可以直接从内存中查询数据,而不用去数据库查询(在磁盘中) CPU读取内存的速度要比读取磁盘快,可以提高效率 Redis缓存 Remote Dictionnary Server(远程数据服务),是一款内存高速缓存数据库. 五种常用数据类型: String(字符串).List(列表).Set(集合).Hash(散列).ZSet(有序集合) 可持久化:一边运行,一边向硬盘备份一份,防止断电等偶然情况,导致内存中数据丢失

  • spring boot 日志配置详解

    最近在学习spring boot框架的路上,今日看了一下spring boot日志配置,顺便留个笔记记录一下. 1.新建logback.xml文件 内容如下: <!-- Logback configuration. See http://logback.qos.ch/manual/index.html --> <configuration scan="true" scanPeriod="10 seconds"> <include res

  • win7下Apache2.2+Tomcat7.0整合配置详解

    一.简单介绍 Apache.Tomcat Apache HTTP Server(简称 Apache),是 Apache 软件基金协会的一个开放源码的网页服务器,可以在 Windows.Unix.Linux 等操作系统中运行是最流行的Web服务器软件之一.Apache 反应速度快,运行效率高,但只支持HTML等静态页面(加载插件后也可支持 PHP 页面). Apache Tomcat 是由 Apache 软件基金协会与 Sun 公司联合开发的一款Web服务器,它除了支持HTML等静态页面外,还支持

随机推荐