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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven项目下solr和spring的整合配置相关的知识,希望对你有一定的参考价值。

html">package?com.millery.spring_solr.test;??

前言:

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

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

[html] view plain copy
<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配置文件的内容:

[html] view plain copy
<?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配置文件的内容:

[html] view plain copy
solr.Url=http://127.0.0.1:8983/millery??
solr.maxRetries=1??
solr.connectionTimeout=500??

第三步:编写applicationContext.xml配置文件

[html] view plain copy
<?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"><span?style="color:?rgb(0,?0,?255);"></span></a><pre?name="code"?class="html"><span?style="white-space:pre">???</span></bean>??
[html] view plain copy
</beans>??

第四步:写测试代码

User实体类:

[html] view plain copybr/>package?com.millery.spring_solr.pojo;??
??
/**??
?*???
?*[email protected]项目名称:spring-solr??
?[email protected]类名称:User??
?
[email protected]类描述:用户实体类??
br/>?*[email protected]创建人:millery??
?[email protected]创建时间:2015年11月5日?上午10:42:43???
?
[email protected]:??
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;??
????}??
??
[email protected]??
????public?String?toString()?{??
????????return?"User?[id="?+?id?+?",?username="?+?username?+?",?loginPwd="??
????????????????+?loginPwd?+?",?email="?+?email?+?"]";??
????}??
}??
SpringSolr类:

[html] view plain copy??
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;??
??
/**??
?*???
?*[email protected]项目名称: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;??
??
/**??
?*???
?*[email protected]项目名称:spring-solr??
?[email protected]类名称:SpringSolrTest??
?
[email protected]类描述:测试类??
br/>?*[email protected]创建人:millery???
?[email protected]创建时间:2015年11月5日?上午10:48:57???
?
[email protected]:??
br/>?*/??
@Component??
public?class?SpringSolr?{??
br/>??
[email protected]??
????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类:

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);
}
}
来自CODE的代码片
SpringSolrTest.java

运行代码结果:

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配置文件配置完成后,可能会出现下图的报错问题,此时就需要简单的处理一下就可以了。










以上是关于maven项目下solr和spring的整合配置的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot整合Spring Data Solr

Spring系列整合Swagger

solr : springboot 整合 solr

maven-spring-mybaties-restful 整合 有源码项目 内容实用

Spring Boot整合Solr7.x

spring3.2+mybatis3.2+maven整合