http://blog.csdn.net/yerenyuan_pku/article/details/72886305java
Solr服務配置好以後,接下來咱們就要考慮一個問題,那就是咱們要把商品數據導入到索引庫裏面才行,不然的話,咱們是沒有辦法實現搜索這個功能的。接下來咱們勢必要搭建搜索工程了。首先,咱們仍是先看下淘淘商城的總體架構圖,以下圖所示,咱們已經寫完了後臺管理系統、商品服務、商城門戶、內容服務,如今須要搭建的是搜索系統和搜索服務。
下面咱們便來搭建搜索服務工程。git
咱們可參考taotao-manager工程的建立來搭建搜索服務工程,它是後臺的服務層工程。這個工程裏面須要不少模塊,咱們須把這些模塊單獨拆分,因此它應該是一個聚合工程。
首先點擊【File】菜單選項,並在下拉框中選中【New】,接着點擊【Other】,以下:
在輸入框中輸入maven,並選擇Maven Project,以下:
點擊【Next】,勾選Create a simple project複選框,若是你不打上這個勾,它會讓你選擇一個骨架,但骨架裏面是沒有pom這個模板的。
點擊【Next】,出現以下對話框,在該對話框中定義maven工程的座標,以下:
最後點擊【Finish】,taotao-search工程便可建立完畢。github
如今咱們來搭建taotao-search-interface模塊,方法是在taotao-search工程上右鍵→Maven→New Maven Module Project,以下圖所示。
彈出以下對話框,勾選」Create a simple project」,在Module Name中輸入taotao-search-interface,而後點擊」Next」。
選擇該模塊的打包方式,咱們使用默認的jar,直接點擊」Finish」。
web
搭建taotao-search-service模塊,步驟基本上同上,只是打包方式換成war便可,以下圖所示。
至於dao和pojo這兩個模塊咱們不用在taotao-search工程再新建一遍了,由於咱們在taotao-manager工程當中便建立好了,咱們只須要引用這兩個模塊就能夠了。spring
參考taotao-manager聚合工程,把它的pom.xml文件中的依賴拷過來,只是須要修改下tomcat插件的端口號,修改成8084(前面已經用到8083了)。
爲方便你們複製,現把taotao-search工程的pom.xml文件的內容貼出。sql
<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> <parent> <groupId>com.taotao</groupId> <artifactId>taotao-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>com.taotao</groupId> <artifactId>taotao-search</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>taotao-search-interface</module> <module>taotao-search-service</module> </modules> <dependencies> <dependency> <groupId>com.taotao</groupId> <artifactId>taotao-common</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> <!-- 配置tomcat插件 --> <build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <port>8084</port> <path>/</path> </configuration> </plugin> </plugins> </build> </project>
咱們可參考taotao-manager-interface工程的pom.xml文件,因爲咱們的搜索服務也可能用到pojo,主要添加對taotao-manager-pojo的依賴,以下圖所示。
數據庫
咱們能夠參考taotao-manager-service工程的依賴。因爲搜索服務要用到數據庫,所以須要有taotao-manager-dao,把依賴的interface改成咱們的taotao-search-interface,taotao-search-service所須要依賴的內容以下所示。apache
<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> <parent> <groupId>com.taotao</groupId> <artifactId>taotao-search</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>taotao-search-service</artifactId> <packaging>war</packaging> <dependencies> <dependency> <groupId>com.taotao</groupId> <artifactId>taotao-manager-dao</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.taotao</groupId> <artifactId>taotao-search-interface</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> <!-- dubbo相關 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <!-- 排除依賴 --> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> <exclusion> <groupId>org.jboss.netty</groupId> <artifactId>netty</artifactId> </exclusion> </exclusions> </dependency> <!-- zookeeper的客戶端,你要鏈接zookeeper,須要把如下兩個jar包加進來 --> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> </dependency> </dependencies> </project>
咱們把taotao-manager-service的src/main/resources目錄下的mybatis、properties、spring三個目錄粘貼到taotao-search-service的src/main/resources目錄中。SqlMapConfig.xml文件不用動,以下圖所示。
properties目錄下的db.properties配置文件也不用修改,以下圖所示。
接着咱們再看下spring目錄下的文件,首先看applicationContext-dao.xml文件,這個配置文件用來操做數據庫的,咱們須要在該配置文件中作一點改動,以下圖所示。
爲了你們方便複製,現把該文件的內容黏貼出來。tomcat
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"> <!-- 數據庫鏈接池 --> <!-- 加載配置文件 --> <context:property-placeholder location="classpath:properties/db.properties" /> <!-- 數據庫鏈接池 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="driverClassName" value="${jdbc.driver}" /> <property name="maxActive" value="10" /> <property name="minIdle" value="5" /> </bean> <!-- 讓spring管理sqlsessionfactory 使用mybatis和spring整合包中的 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 數據庫鏈接池 --> <property name="dataSource" ref="dataSource" /> <!-- 加載mybatis的全局配置文件 --> <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" /> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.taotao.mapper,com.taotao.search.mapper" /> </bean> </beans>
除此以外,咱們還要到taotao-search-service的src/main/java目錄下新建一個com.taotao.search.mapper包,以下圖所示。
下面咱們來看下spring目錄下的第二個文件——applicationContext-service.xml,咱們把包掃描器掃描的包修改成」com.taotao.search.service」,將對外發布的dubbo服務的端口改成」20882」,因爲還沒寫服務接口,咱們先把拷過來的暴露的服務接口註釋掉(留個模板),而且將提供方應用信息名稱改成」taotao-search」。
爲了你們方便複製,現把該文件的內容黏貼出來。markdown
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"> <context:component-scan base-package="com.taotao.search.service"></context:component-scan> <!-- 使用dubbo發佈服務 --> <!-- 提供方應用信息,用於計算依賴關係 --> <dubbo:application name="taotao-search" /> <dubbo:registry protocol="zookeeper" address="192.168.25.128:2181" /> <!-- 用dubbo協議在20882端口暴露服務 --> <dubbo:protocol name="dubbo" port="20882" /> <!-- 聲明須要暴露的服務接口 --> <!-- <dubbo:service interface="com.taotao.service.ItemService" ref="itemServiceImpl" timeout="300000" /> --> </beans>
因爲上面配置的要掃描的包尚未建立,所以咱們在taotao-search-interface工程中新建」com.taotao.search.service」包,在taotao-search-service工程中新建」com.taotao.search.service.impl」包,以下圖所示。
咱們再看下一個applicationContext-trans.xml配置文件,這個配置文件是用來配置事務的,因爲搜索服務只是查數據庫,不涉及到改數據庫,所以咱們用不到事務,照理來講,咱們應該把這個配置文件刪除掉,但我這裏仍是將其留下來了,並且還修改切面的包爲com.taotao.search.service,以下圖所示。
至於該文件刪不刪,全憑我的意願。
最後,咱們把taotao-manager-service下的WEB-INF及web.xml,粘貼到taotao-search-service的webapp目錄下,修改web.xml文件中的<display-name>
爲」taotao-search」。
至此,咱們的框架就整合好了。但願你們渡過愉快的一天!