Springboot整合dubbo构建多模块项目

之前项目由于要用到dubbo,用了一段时间之后,觉得有必要简单总结下springboot+dubbo的整合。我们的项目其实主要分为 四个模块:card、common、core、server。其中card模块就是controller层、common模块主要放一些实体类+server接口、core层就是map的xml文件 + mapper映射接口,最后server模块就是server接口的实现类了。


下面就 一起来看下dubbo项目的简单设置。

1、环境

jdk1.8+springboot+dubbo +swagger (swagger可以大大提高接口测试的效率)

其中swagge可以参考 swagger使用介绍

另外需要把dubbo所依赖的alibaba jar包放入maven项目的con目录中,我的是这样:



2、项目模块

项目中的pom文件的parent部分

<?xml version="1.0" encoding="UTF-8"?>
<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.L-CARD</groupId>
    <artifactId>L-CARD</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>card</module>
        <module>server</module>
        <module>common</module>
        <module>core</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.vesion>1.8</java.vesion>
        <spring.version>4.3.6.RELEASE</spring.version>
        <spring-boot.version>1.3.6.RELEASE</spring-boot.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <profiles>
        <profile>
            <id>jdk-1.8</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.8</jdk>
            </activation>
            <properties>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
            </properties>
        </profile>
    </profiles>

</project>
2.1dubbo项目的提供方
2.1.1common模块:

目录结构:


pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>L-CARD</artifactId>
        <groupId>com.L-CARD</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>common</artifactId>

    <dependencies>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.5.4</version>
        </dependency>
        <!-- 参数校验jar包 start -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.4.1.Final</version>
        </dependency>
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.16</version>
        </dependency>
    </dependencies>
</project>

先创建实体类和dao层接口

AdminLogin.java实体类:
package com.left.model;

import lombok.Data;
import org.hibernate.validator.constraints.NotBlank;

import java.io.Serializable;
import java.util.Date;

/**
 * admin_login
 */
@Data
public class AdminLogin implements Serializable {
    /**
     * 主键
     */
    private Long id;

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码(md5)
     */
    private String password;

    /**
     * 真实名字
     */
    private String trueName;

    /**
     * 手机号
     */
    private String mobile;

    /**
     * 创建时间
     */
    private Date createdAt;

    /**
     * 操作日期
     */
    private Date updatedAt;

    /**
     * 1.有效2.无效
     */
    private Integer status;

    /**
     * 输入密码错误次数
     */
    private Integer errorCount;

    /**
     * 登录token
     */
    private String token;

    /**
     * salt:混淆密码
     */
    private String salt;
    /**
     * 管理员角色id
     */
    private Long adminRoleId;

}
AdminLoginManager接口:
package com.left.service;

import com.left.model.AdminLogin;
import com.left.pub.ResponseData;

import java.util.Map;

/**
 */
public interface AdminLoginManager {
    /**
     * 根据token查找登录账户
     * @param token
     * @return
     */
    AdminLogin findByToken(String token);

    }
2.1.2 server模块:

目录结构:


主要代码就是前面server接口得实现类

先配置dubbo提供方配置文件dubbo-provider.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:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

        <!-- 提供方应用信息,用于计算依赖关系 -->
        <dubbo:application name="L-CARD-SERVER"/>

        <!-- 使用multicast广播注册中心暴露服务地址 -->
        <dubbo:registry address="${dubbo.registry}" file="./dubbo-left-server.cache"/>

        <!-- 用dubbo协议在20880端口暴露服务 -->
        <dubbo:protocol name="dubbo" port="${dubbo.port}"/>

        <!-- 声明需要暴露的服务接口 -->
        <dubbo:service interface="com.left.service.AdminLoginManager" ref="adminLoginManager" timeout="10000" retries="0" delay="-1"/>
       

        <!-- 和本地bean一样实现服务 -->
        <bean id="adminLoginManager" class="com.left.impl.AdminLoginManagerImpl"/>
        

</beans>

application配置文件:

server:
  port: 8000
  tomcat:
    max-threads: 1000
spring:
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    initialSize: 5
    minIdle: 2
    maxActive: 20
    filters: stat,config,wall
    usernameSlave: root
    urlSlave: jdbc:mysql://127.0.01:3306/left_pillar?characterEncoding=utf-8
    passwordSlave: xx
    publicKeySlave: xx
    username: root

    url: jdbc:mysql://127.0.0.1:3306/xx?characterEncoding=utf-8
    password: xx
    publicKey: xx
dubbo:
  registry: redis://127.0.0.1:6379
  port: 20881


pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>L-CARD</artifactId>
        <groupId>com.L-CARD</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>server</artifactId>
    <dependencies>
        <dependency>
            <groupId>com.L-CARD</groupId>
            <artifactId>core</artifactId>
            <version>1.0-SNAPSHOT</version>
            <exclusions>
                <exclusion>
                    <artifactId>commons-logging</artifactId>
                    <groupId>commons-logging</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-tx</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <version>1.3.6.RELEASE</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring-context</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-core</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>jackson-databind</artifactId>
                    <groupId>com.fasterxml.jackson.core</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>log4j-over-slf4j</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>

            </exclusions>
        </dependency>
        <!--spring-boot -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.3.6.RELEASE</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring-core</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-beans</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-context</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-aop</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-webmvc</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>jackson-databind</artifactId>
                    <groupId>com.fasterxml.jackson.core</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>hibernate-validator</artifactId>
                    <groupId>org.hibernate</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--dubbo-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.8.4</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-core</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-context</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-expression</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-aop</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-web</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-beans</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>javassist</artifactId>
                    <groupId>org.javassist</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>commons-codec</artifactId>
                    <groupId>commons-codec</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.1.0</version>
            <exclusions>
                <exclusion>
                    <artifactId>commons-pool</artifactId>
                    <groupId>commons-pool</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>commons-pool</groupId>
            <artifactId>commons-pool</artifactId>
            <version>1.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>4.3.6.RELEASE</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring-beans</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-core</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.18.1-GA</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.8.3</version>
        </dependency>

        <!--阿里短服务-->
        <dependency>
            <groupId>org.taobao</groupId>
            <artifactId>taobao-code-core</artifactId>
            <version>3.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.taobao</groupId>
            <artifactId>taobao-code-api</artifactId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.vesion>1.8</java.vesion>
        <spring.version>4.3.6.RELEASE</spring.version>
        <spring-boot.version>1.3.6.RELEASE</spring-boot.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.5.3.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

server接口的实现类AdminLoginManagerImpl:

package com.left.impl;

import com.left.enums.CodeEnums;
import com.left.mapper.AdminLoginMapper;
import com.left.model.AdminLogin;
import com.left.pub.LpayException;
import com.left.pub.ResponseData;
import com.left.service.AdminLoginManager;
import com.left.util.Des3;
import com.left.util.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by Right on 2018/5/7.
 */
public class AdminLoginManagerImpl implements AdminLoginManager{
    @Autowired
    private AdminLoginMapper adminLoginMapper;
    @Override
    public AdminLogin findByToken(String token) {
        return adminLoginMapper.findByToken(token);
    }

}


2.1.3  core模块:

主要代码就是mapper映射类和mapper.xml文件

pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>L-CARD</artifactId>
        <groupId>com.L-CARD</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>core</artifactId>

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.37</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <version>1.4.0.RELEASE</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring-beans</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-boot-starter</artifactId>
                    <groupId>org.springframework.boot</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-core</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.2.0</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring-boot-autoconfigure</artifactId>
                    <groupId>org.springframework.boot</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-boot-starter</artifactId>
                    <groupId>org.springframework.boot</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-boot-starter-jdbc</artifactId>
                    <groupId>org.springframework.boot</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.5.4</version>
            <exclusions>
                <exclusion>
                    <artifactId>jackson-annotations</artifactId>
                    <groupId>com.fasterxml.jackson.core</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.22</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.3.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.3.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.5</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.6.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>4.3.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.9</version>
        </dependency>
        <dependency>
            <groupId>com.L-CARD</groupId>
            <artifactId>common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.vesion>1.8</java.vesion>
        <spring.version>4.3.6.RELEASE</spring.version>
        <spring-boot.version>1.3.6.RELEASE</spring-boot.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
</project>

BaseMapper:

package com.left;

/**
 * 基础方法
 * @author pillar
 * @param <T>
 */
public interface BaseMapper<T> {
    /**
     * 根据id删除
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Long id);

    /**
     * 添加
     * @param t
     * @return
     */
    int insert(T t);

    /**
     * 添加对象(添加不为空的参数)
     * @param t
     * @return
     */
    int insertSelective(T t);

    /**
     *根据id查询单个对象
     * @param id
     * @return
     */
    T selectByPrimaryKey(Long id);

    /**
     * 修改对象(修改参数不为空的对象)
     * @param t
     * @return
     */
    int updateByPrimaryKeySelective(T t);

    /**
     * 修改对象
     * @param t
     * @return
     */
    int updateByPrimaryKey(T t);
}

mapper接口:

package com.left.mapper;

import com.left.BaseMapper;
import com.left.model.AdminLogin;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface AdminLoginMapper extends BaseMapper<AdminLogin>{
    /**
     * 根据token查找登录账户
     * @param token
     * @return
     */
    AdminLogin findByToken(String token);

   
}

mapper.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.left.mapper.AdminLoginMapper">
  <resultMap id="BaseResultMap" type="com.left.model.AdminLogin">
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="username" jdbcType="VARCHAR" property="username" />
    <result column="password" jdbcType="VARCHAR" property="password" />
    <result column="true_name" jdbcType="VARCHAR" property="trueName" />
    <result column="mobile" jdbcType="VARCHAR" property="mobile" />
    <result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
    <result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
    <result column="status" jdbcType="TINYINT" property="status" />
    <result column="error_count" jdbcType="TINYINT" property="errorCount" />
    <result column="token" jdbcType="VARCHAR" property="token" />
    <result column="salt" jdbcType="VARCHAR" property="salt" />
    <result column="admin_role_id" jdbcType="BIGINT" property="adminRoleId" />
  </resultMap>
  <sql id="Base_Column_List">
    id, username, password, true_name, mobile, created_at, updated_at, status, error_count,
    token, salt,admin_role_id
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />
    from admin_login
    where status = 1 AND id = #{id,jdbcType=BIGINT}
  </select>

</mapper>
mybatis配置文件的配置:
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <setting name="callSettersOnNulls" value="true"/>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="logImpl" value="LOG4J"/>
    </settings>

    <plugins>
        <plugin interceptor="com.left.interceptor.PageInterceptor">
            <property name="pattern" value="Page"/>
        </plugin>
    </plugins>
</configuration>

3.dubbo服务消费方配置
3.1 card模块:

dubbo配置文件dubbo-card.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:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://code.alibabatech.com/schema/dubbo        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    <dubbo:application name="L-CARD-CARD"/>

    <!-- 使用redis广播注册中心暴露发现服务地址 -->
    <dubbo:registry address="${dubbo.registry}" file="./dubbo-left-card.cache"/>


    <!-- 生成远程服务代理,可以和本地bean一样使用-->
    <dubbo:reference id="merchantLoginManager" interface="com.left.service.MerchantLoginManager" />
    
</beans>
application.yml配置文件:
server:
  port: 8002
dubbo:
  registry: redis://127.0.0.1:6379
LoginController类:
package com.left.controller;

import com.left.enums.CodeEnums;
import com.left.fillter.BaseController;
import com.left.model.AdminLogin;
import com.left.model.MerchantLogin;
import com.left.pub.ResponseData;
import com.left.service.MerchantLoginManager;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Random;

/**
 * Created by Right on 2018/5/9.
 */
@RestController
@Api(description = "商户端登录相关")
@RequestMapping("merchant_login")
public class MerchantLoginController extends BaseController{
    @Autowired
    private MerchantLoginManager merchantLoginManager;

    @PostMapping("login")
    @ApiOperation("商户端登录")
    public ResponseData login(@ApiParam(required = true,value = "账号")@RequestParam("username")String username,
                              @ApiParam(required = true,value = "密码")@RequestParam("password")String password) throws Exception {
        return merchantLoginManager.login(username,password);
    }
    @PostMapping("merchant_out")
    @ApiOperation("管理员退出登录")
    public ResponseData loginOut(@ApiParam(required = true,value = "token")@RequestParam("token")String token){
        MerchantLogin merchantLogin = getAccount(token);
        int i = new Random().nextInt(99999999);
        merchantLogin.setToken(token+i);
        return merchantLoginManager.update(merchantLogin);
    }

}

spring+dubbo大致的简单配置过程就如以上,最后启动server和card两个模块就可以运行。其中有部分公共代码已省略,只列出大致的项目结构。








  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值