parent工程
首先创建一个 maven Project maven工程 ,pom类型
pojo工程
然后建立 maven Model 模块,jar类型
dao工程
maven Model 模块,jar类型
技巧:创建模块工程时可以先选中 parent 工程,然后再 ctrl+n 创建,这样就会自动继承 parent了:
下面 Parent 会自动填好的。
商家商品服务接口:
同理,继续创建 model ,jar模式 的 sellergoods-interface 工程
商家商品服务模块:
然后创建 model, war模式的 sellergoods-service工程
因为这个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 中添加依赖。
同理,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的依赖:
===
mybaties 代码生成器生成 pojo、mapper等文件,复制到对应的工程,
然后要注意,每个pojo都应该实现 序列化接口,因为现在各个pojo要在网络上传输。(原来都是在本地调用,所以不需要,现在都是通过dubbo网络调用,所以必须要实现接口)
====
然后编写代码
现在接口项目中写接口:
然后在 service 项目中写 实现类:
注意,代码中 要加入 dubbox 的 @Service 注解。
然后在 web项目中写Controller:
注意,接口注入上面要用 @Reference 注解。
这里Controller类上用的注解是 @RestController,其实这个注解就是相当于原来的 @Controller注解 + @ResponseBody 注解,用这个注解,我们就不用在类中的每一个方法上都写 @ResponseBody注解了。
代码都写完成后,因为我们除了 parent项目是 maven Project 项目外,其他所有项目都是 继承于 parent 项目的 Model模块项目,所以,写完代码后,我们可以在 parent项目上右键,Run as —— maven install ,这样就会安装 所有的 model 项目,如果通过,我们再继续。
都成功了,这样我们先启动 service项目,再启动 web项目,然后访问,就OK了。
说明远程接口调用成功,数据库访问成功。