idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)

       搭建项目之前可以先去我的第一篇微服务项目搭建之前的一些工作准备,中间件等的设置,这里是连续创建,用的都是之前创建好的基础,所以直接更着走了,第一篇微服务链接地址:https://blog.csdn.net/gaofengyan/article/details/85156496

1. 新建project  smbms-springboot-dubbo

创建普通maven工程项目:

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第1张图片

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第2张图片

工程建好如下:

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第3张图片

检查maven设置(快捷键:CTRL+alt+S):

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第4张图片

       注意,我这里没有选择自动导包功能,所以后面每一步都需要自己手动刷新,避免了idea对jar包快速下载造成的仓库留存太多错误而对项目的影响。


2. 新建module   smbms-springboot-dubbox-common(公共module)

同样创建普通maven的公共module:

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第5张图片

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第6张图片

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第7张图片

公共模块如下,并去掉父类继承操作:

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第8张图片

2.1)增加 json 插件包 jar包 配置并手动更新:

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第9张图片

        
            org.codehaus.jackson
            jackson-mapper-asl
            1.9.12
        

2.2)编写实体类pojo与service接口

User.java实体类:

package org.kgc1803.smbms.pojo;

import java.io.Serializable;

public class User implements Serializable {
    private Integer id;
    private String userCode;
    private String  userName;
    private String password;

    public User(){
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUserCode() {
        return userCode;
    }

    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

Order.java实体类:

package org.kgc1803.smbms.pojo;

import org.codehaus.jackson.annotate.JsonProperty;

import java.io.Serializable;

public class Order implements Serializable {
    //@JsonProperty实体类可以自动转化为  json  类对象数据的属性
    @JsonProperty
    private Integer id;
    @JsonProperty
    private Integer ownerUserId;
    @JsonProperty
    private String productName;
    @JsonProperty
    private Double price;
    @JsonProperty
    private Integer amount;

    public Order(){
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getOwnerUserId() {
        return ownerUserId;
    }

    public void setOwnerUserId(Integer ownerUserId) {
        this.ownerUserId = ownerUserId;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }

    public Integer getAmount() {
        return amount;
    }

    public void setAmount(Integer amount) {
        this.amount = amount;
    }
}

OrderService.java接口:

package org.kgc1803.smbms.service;

import org.kgc1803.smbms.pojo.Order;

import java.util.List;

public interface OrderService {
    //查看所有
    List findList(Integer id);
}

UserService.java接口:

package org.kgc1803.smbms.service;


import org.kgc1803.smbms.pojo.User;

/**
 * 用户接口
 */
public interface UserService {
    //登陆
    User loginUser(User u);
}

2.3)编写完后这里需要用maven打成jar包并发布到注册中仓库

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第10张图片

控制台出现下面情况说明打包和发布成功:

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第11张图片

查看仓库的架包是否发布成功:

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第12张图片


3. 新建module   smbms-springboot-dubbox-provider(提供者module)

按照上面的方式创建提供者模块并对pom.xml文件做初修改:

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第13张图片

3.1)pom.xml配置文件增加以下相应的jar包 配置




    4.0.0
    org.kgc1803
    1.0-SNAPSHOT
    smbms-springboot-dubbox-provider
    
    
        1.8
        1.5.10.RELEASE
        1.3.2
        5.1.46
    

    
        
        
            org.kgc1803
            smbms-springboot-dubbox-common
            1.0-SNAPSHOT
        
        
        
        org.springframework.boot
        spring-boot-starter
        ${spring.boot.version}
        
        
        
            mysql
            mysql-connector-java
            ${mysql.driver.version}
        
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            ${mybaties.spring.boot.version}
        
        
        
        org.springframework.boot
        spring-boot-starter-test
        ${spring.boot.version}
        

        
        
            org.apache.zookeeper
            zookeeper
            3.4.6
        
        
        
            com.101tec
            zkclient
            0.8
        
        
        
        com.alibaba
        dubbo
        2.8.4
        
        
        
        com.caucho
        hessian
        4.0.7
        
        
        
        com.alibaba
        dubbo-rpc-rest
        2.8.4
        
        
            com.alibaba.boot
            dubbo-spring-boot-starter
            0.1.1
        

    

       注意,按照前面的微服务配置方式,是一样的jar包,只是在遇到jar包版本跨越太大就会出现冲突,并且有很多jar包是重复的,这时候我们需要耐心调整jar包的版本,尽量统一并兼容。以上是在之前的微服务项目的jar包中将版本归一后的的,现在再做一些jar去重,精简后的配置文件如下,并且这里并没有完全达到全部去重的效果:




    4.0.0
    org.kgc1803
    1.0-SNAPSHOT
    smbms-springboot-dubbox-provider
    
    
        1.8
        1.5.10.RELEASE
        1.3.2
        5.1.46
    

    
        
        
            org.kgc1803
            smbms-springboot-dubbox-common
            1.0-SNAPSHOT
        
        

        
        
            mysql
            mysql-connector-java
            ${mysql.driver.version}
        
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            ${mybaties.spring.boot.version}
        
        


        
        
            org.apache.zookeeper
            zookeeper
            3.4.6
        
        
        
            com.101tec
            zkclient
            0.8
        
        

        

        

        
        
            com.alibaba.boot
            dubbo-spring-boot-starter
            0.1.1
        

    

3.2)编写service 实现类、dao-mapper

UserMapper.java   dao-mapper类

package org.kgc1803.smbms.dao;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.kgc1803.smbms.pojo.User;
import org.springframework.stereotype.Repository;

/**
 * @Mapper 表示该接口是一个注解mybaties接口
 * @Repository 表示注入一个dao实现类
 */
@Mapper
@Repository
public interface UserMapper {
    //登陆
    @Select("SELECT id,userCode,userName\n" +
            "FROM smbms_user\t\n" +
            "WHERE userCode=#{userCode} and password=#{password}")
    @Results(id="userMap",value = {
            @Result(property = "id",column = "id",javaType =Integer.class ),
            @Result(property = "userName",column = "userName",javaType =String.class),
            @Result(property = "userCode",column = "userCode",javaType =String.class)
    })
    User loginUser(User u);
}

UserServiceImpl.java 实现类:

package org.kgc1803.smbms.service;

import com.alibaba.dubbo.config.annotation.Service;
import org.kgc1803.smbms.dao.UserMapper;
import org.kgc1803.smbms.pojo.User;

import javax.annotation.Resource;

/**
 * springboot的注解功能实现了dubbox的配置文件部分功能,如发布服务:
 * 
 */

@Service(timeout = 10000)
public class UserServiceImpl implements UserService {

    @Resource
    private UserMapper userMapper;

    public User loginUser(User u) {
        return userMapper.loginUser(u);
    }
}

3.3)在spring boot中配置发布dubbox 服务,spring boot精简了更多的配置文件,大多已经加入到注解里面实现,只有部分需要配置文件实现。
      1)在application.properties配置文件配置

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第14张图片

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第15张图片

#dataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/dubbo-smbms
spring.datasource.username=root
spring.datasource.password=123456
#设置提供者本次发布的应用名称
dubbo.application.name=smbms_provider123
dubbo.registry.address=zookeeper://127.0.0.1:2181
#dubbo扫描包 发布服务所在的包
dubbo.scan.base-packages=org.kgc1803.smbms.service

#服务器发布的端口号
server.port=21001

3.4)新建提供者的发布main窗口SmbmsProviderApplication.java 通过这个main窗口将提供者注入到注册中心,提供服务;重点是这里要注意这个main窗口创建的位置,他必须与dao-mapper和service实现类同级或高一级,才能在启动时扫描到所有类:

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第16张图片

package org.kgc1803.smbms;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;

@SpringBootApplication
public class SmbmsProviderApplication {
    public static void main(String[] args){
        //项目以web方式启动
        new SpringApplicationBuilder(SmbmsProviderApplication.class).web(false).run();
    }
}

4. 新建module   smbms-springboot-dubbox-consume(消费者module)

按照上面的方法创建消费者模块:

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第17张图片

在main下面创建webapp/WEB-INF/view目录,以便创建web的jsp页面。

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第18张图片

4.1)增加jar包 修改配置;手动添加spring boot的启动插件:




    4.0.0
    org.kgc1803
    1.0-SNAPSHOT

    smbms-springboot-dubbox-consume
    war

    
    
        1.8
        1.5.10.RELEASE
        1.3.2
        5.1.46
    

    
        
        
            org.kgc1803
            smbms-springboot-dubbox-common
            1.0-SNAPSHOT
        
        
        
            org.springframework.boot
            spring-boot-starter-web
            ${spring.boot.version}
        

        
        
            com.alibaba.boot
            dubbo-spring-boot-starter
            0.1.1
            
                
                    org.apache.zookeeper
                    zookeeper
                
            
        

        
        
            org.apache.zookeeper
            zookeeper
            3.4.6
        
        
        
            com.101tec
            zkclient
            0.8
        
        
        
        
            org.apache.tomcat.embed
            tomcat-embed-jasper
            8.5.27
            provided
        
        
            org.apache.tomcat
            tomcat-jsp-api
            8.5.27
            provided
        

    

    
        
            
            
                org.springframework.boot
                spring-boot-maven-plugin
                2.1.0.RELEASE
            
        
    

4.2)编写 controller层

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第19张图片

package org.kgc1803.smbms.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import org.kgc1803.smbms.pojo.User;
import org.kgc1803.smbms.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import javax.servlet.http.HttpSession;


@Controller
@RequestMapping("/user")
public class UserController {

    @Reference
    private UserService userService;

    //登陆
    @RequestMapping(value = "/dologin.html",method = RequestMethod.POST)
    public String dologin(User user, HttpSession session){
        User u = userService.loginUser(user);
        if (u!=null){//登陆失败
            session.setAttribute("session_user",u);
            return "index";
        }else {//登陆成功
            return "login";
        }
    }

}

4.3)在spring boot中配置订阅dubbox服务

      1)在application.properties配置文件配置

#spring mvc
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp
#服务器
server.port=8083
server.tomcat.uri-encoding=UTF-8
#spring 字符集
spring.http.encoding.charset=UTF-8
spring.http.encoding.force=true
spring.http.encoding.enabled=true
#dubbo
dubbo.application.name=smbms_consume_123
dubbo.registry.address=zookeeper://127.0.0.1:2181

4.4)新建消费者的main窗口 SmbmsConsumeApplication.java:

package org.kgc1803.smbms;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SmbmsConsumeApplication {
    public static void main(String[] args){
        SpringApplication.run(SmbmsConsumeApplication.class);
    }
}

注意:消费者的启动并不使用这个窗口启动,同样用右边的窗口spring boot run启动。

login.jsp

<%--
  Created by IntelliJ IDEA.
  User: Lenovo
  Date: 2018/12/26
  Time: 15:30
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    登陆


用户名: 密码:

index.jsp

<%--
  Created by IntelliJ IDEA.
  User: Lenovo
  Date: 2018/12/24
  Time: 15:00
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    首页





登陆成功,欢迎你:${session_user.userName}
订单列表:

5.启动测试

5.1)启动 SmbmsProviderApplication.java将提供者发布到注册中心(前提必须是启动zookeeper和tomcat服务脚本):

如下内容说明启动成功:

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第20张图片

如果这里启动不了,则需要修改maven配置,如下红框处:

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第21张图片

链接之前的配置:http://localhost:8080/dubbo-admin-2.8.4/

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第22张图片

5.2)用spring boot 启动消费者

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第23张图片

连接端口号:http://localhost:8082/

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第24张图片

输入数据库的登陆信息验证:

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第25张图片

跳转成功,到达首页,并取到值:

idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)_第26张图片


以上基础配置加测试就算成功了。有待更新!

你可能感兴趣的:(分布式与微服务开发)