parent工程

首先创建一个 maven Project   maven工程 ,pom类型

品优购工程创建_maven

 

pojo工程

然后建立 maven Model 模块,jar类型

品优购工程创建_mvc_02

 

dao工程

maven Model 模块,jar类型

技巧:创建模块工程时可以先选中 parent 工程,然后再 ctrl+n 创建,这样就会自动继承 parent了:

品优购工程创建_jar_03

品优购工程创建_xml_04

下面 Parent 会自动填好的。

 

商家商品服务接口:

同理,继续创建 model ,jar模式 的 sellergoods-interface 工程

 

商家商品服务模块:

然后创建 model, war模式的 sellergoods-service工程

品优购工程创建_xml_05

因为这个service工程是要部署到tomcat提供服务的,所以用 war 模式,但他还是个 模块。

 

同理创建运营商管理后台manager-web,model、war

创建商家管理后台shop-web,model、war

======

dao层的pom中需要引入  mybatis 的相关 jar、mybatis和spirng整合的jar、mybatis第三方分页插件pagehelper的jar、数据库mysql的相关jar,数据库连接池druid的jar。

还需要

jdbc配置文件 jdbc.properties,

mybaties相关配置文件SqlMapConfig.xml,

spring配置文件 applicationContext-dao.xml。

 

另外 dao 项目需要依赖 pojo ,所以要在 pom 中添加依赖。

品优购工程创建_maven_06

 

同理,interface项目也要添加对pojo的依赖

然后 service项目的 pom 中添加  spring、springMVC、dubbo、servlet 等相关依赖。

 

service项目中还需要在 spirng配置文件中配置 dubbo,配置如下:

applicationContext-service.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:dubbo="http://code.alibabatech.com/schema/dubbo" 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.xsd
        http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
    <!-- 你自己(当前项目所在服务器)访问注册中心要用的端口
    注意:如果当前电脑中部署启动了多个dubbo服务,那么要配置不同的端口去访问注册中心,否则会因为端口占用而出错
     -->
    <dubbo:protocol name="dubbo" port="20881"></dubbo:protocol>
    <!-- 自定义的要暴露服务的服务器(项目)名称,可以用当前工程名 -->
    <dubbo:application name="pinyougou-sellergoods-service"/>
    <!-- dubbo注册中心的地址 -->  
    <dubbo:registry address="zookeeper://192.168.25.128:2181"/>
    <!-- 需要扫描的 dubbo相关注解所在的包 -->
    <dubbo:annotation package="com.pinyougou.sellergoods.service.impl" />  
   
</beans>

注意第一行  <dubbo:protocol name="dubbo" port="20881"></dubbo:protocol>     ,这个如果我们当前电脑上只跑一个 dubbo 的服务,那么这行可以省略,它会使用默认端口  20880 去访问 zookeeper 注册中心。但是,当我们在同一台电脑上跑多个 dubbo 服务的话,就要加上这一行,而且不同服务要配置不同的端口,比如下一个服务用20882端口,否则会出现端口占用的错误。

 

然后我们服务层还需要 依赖 dao层和interface层,在pom中引入。

=====

web层,引入 pom 依赖(修改tomcat启动端口),添加 配置文件。

看一下 manage-web 项目中的 spirng配置文件:

springmvc.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:dubbo="http://code.alibabatech.com/schema/dubbo" 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.xsd
        http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <context:property-placeholder location="classpath:config/application.properties" />
    
    <mvc:annotation-driven>
      <mvc:message-converters register-defaults="true">
        <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">  
          <property name="supportedMediaTypes" value="application/json"/>
          <property name="features">
            <array>
              <value>WriteMapNullValue</value>
              <value>WriteDateUseDateFormat</value>
            </array>
          </property>
        </bean>
      </mvc:message-converters>  
    </mvc:annotation-driven>

    <!-- 引用dubbo 服务 -->
    <!-- 暴露服务器名(项目名) -->
    <dubbo:application name="pinyougou-manager-web" />
    <!-- zookeeper注册中心地址 -->
    <dubbo:registry address="zookeeper://192.168.25.128:2181"/>
    <!-- web项目中的dubbox扫描包 -->
    <dubbo:annotation package="com.pinyougou.manager.controller" />      

</beans>

注意:web层要添加对 接口 interface的依赖:

品优购工程创建_maven_07

 

===

mybaties 代码生成器生成 pojo、mapper等文件,复制到对应的工程,

然后要注意,每个pojo都应该实现 序列化接口,因为现在各个pojo要在网络上传输。(原来都是在本地调用,所以不需要,现在都是通过dubbo网络调用,所以必须要实现接口)

====

 然后编写代码

现在接口项目中写接口:

品优购工程创建_xml_08

然后在 service 项目中写 实现类:

品优购工程创建_xml_09

注意,代码中 要加入 dubbox 的 @Service 注解。

 

然后在 web项目中写Controller:

品优购工程创建_xml_10

注意,接口注入上面要用 @Reference 注解。

这里Controller类上用的注解是 @RestController,其实这个注解就是相当于原来的 @Controller注解 + @ResponseBody 注解,用这个注解,我们就不用在类中的每一个方法上都写 @ResponseBody注解了。

品优购工程创建_spring_11

代码都写完成后,因为我们除了 parent项目是 maven Project 项目外,其他所有项目都是 继承于 parent 项目的 Model模块项目,所以,写完代码后,我们可以在 parent项目上右键,Run as —— maven install  ,这样就会安装 所有的 model 项目,如果通过,我们再继续。

品优购工程创建_xml_12

品优购工程创建_xml_13

 

都成功了,这样我们先启动 service项目,再启动 web项目,然后访问,就OK了。

品优购工程创建_xml_14

说明远程接口调用成功,数据库访问成功。