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

solrspring整合其實很簡單,只要注意導入依賴的配置文件即可。廢話不多說,上代碼。

第一步:編寫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.xmlsolr.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"><span style="color: rgb(0, 0, 255);"></span></a><pre name="code" class="html"><span style="white-space:pre">	</span></bean>
</beans>


第四步:寫測試代碼

User實體類:

package com.millery.spring_solr.pojo;

/**
 * 
 * @項目名稱:spring-solr
 * @類名稱:User
 * @類描述:用戶實體類
 * @創建人:millery
 * @創建時間:2015年11月5日 上午10:42:43 
 * @version:
 */
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類:

</pre></p><p>SpringSolr<span style="font-family:宋體;">類:</span></p><p><pre name="code" class="html">package com.millery.spring_solr.test;

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
 * @類描述:測試類
 * @創建人:millery 
 * @創建時間:2015年11月5日 上午10:48:57 
 * @version:
 */
@Component
public class SpringSolr {

	@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類:

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;

/**
 * 
 * @項目名稱:spring-solr
 * @類名稱:SpringSolrTest
 * @類描述:測試類
 * @創建人:millery
 * @創建時間:2015年11月5日 上午10:56:06 
 * @version:
 */
public class SpringSolrTest {

	private SpringSolr springSolr;

	@Before
	public void setUp() throws Exception {
		// 初始化Spring容器
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
				"applicationContext.xml", "applicationContext-solr.xml");
	
		//獲取對象
		this.springSolr = applicationContext.getBean(SpringSolr.class);
	}

	@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、在建立工程時打包方式使用jarwar的選擇可能存在糾結,只想說不用糾結,選哪個都是一樣的。

2、在工程pom.xml配置文件配置完成後,可能會出現下圖的報錯問題,此時就需要簡單的處理一下就可以了。

問題圖片:

 

解決方法就是右擊工程-->maven-->update project-->選擇當前的工程-->OK,這樣報錯的紅叉就消失了。


發佈了44 篇原創文章 · 獲贊 68 · 訪問量 54萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章