首页 > 开发 > Java > 正文

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

2024-07-14 08:42:55
字体:
来源:转载
供稿:网友

前言:

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/>@Beforepublic void setUp() throws Exception {// 初始化Spring容器ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml", "applicationContext-solr.xml");//获取对象this.springSolr = applicationContext.getBean(SpringSolr.class);br/>}@Testpublic 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配置文件配置完成后,可能会出现下图的报错问题,此时就需要简单的处理一下就可以了。

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


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表