zoukankan      html  css  js  c++  java
  • Dubbo开发,利用项目模拟提供者和消费者之间的调用--初学

    开发工具:IDEA,虚拟机 VMware Workstation

    预备工作:安装好zookeeper的虚拟机,电脑jdk更换为1.7,本地tomcat启动,能够访问以下页面即可进行开发

    2.建立以下springboot工程,关系图如下

    1.首先打包父工程wk-parent,把需要的公共依赖导入,供其他项目依赖

    2.打包pojo项目wk-pojo,实体类全部实现序列化

    3.以上两个都打jar包即可,接下来整合接口项目wk-interface,只是单纯的接口即可,供提供者业务层实现

    4.开发提供者wk-dubbo

     

     a.service实现类代码

    @Service(version="1.0.0")
    public class UserService implements IUserService {

    @Autowired
    private UserDao userDao;

    @Override
    public User loginAdmin(User user) {
    return userDao.loginAdmin(user);
    }

    @Override
    public WitkeyUser login(WitkeyUser witkeyUser) {
    return userDao.login(witkeyUser);
    }
    }
    b.application.properties
    server.port=8013
    mybatis.mapper-locations=classpath:mapping/*.xml
    mybatis.configuration.map-underscore-to-camel-case=true
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/weike?characterEncoding=utf-8
    spring.datasource.username=root
    spring.datasource.password=root
    # 应用名称
    spring.dubbo.application.name=provider
    #注册中心地址
    spring.dubbo.registry.address=zookeeper://192.168.17.130:2181
    #协议名称
    spring.dubbo.protocol.name=dubbo
    #协议端口
    spring.dubbo.protocol.port=20880
    #服务类包目录
    spring.dubbo.scan=com.buba.weike.dubbo.wkdubbo.service.impl
    #打印mybatis日志信息
    logging.level.com.buba.weike.dubbo.wkdubbo.dao=debug

    5.开发消费者,把接口打包,加入项目依赖中,并注入到消费者service层的实现类中

     a.application.properties

    ## 避免和 server 工程端口冲突
    server.port=8081
    spring.mvc.view.prefix=/jsps/
    spring.mvc.view.suffix=.jsp
    ## Dubbo 服务消费者配置
    spring.dubbo.application.name=consumer
    spring.dubbo.registry.address=zookeeper://192.168.17.130:2181
    spring.dubbo.scan=com.buba.weike.duboo.wkmanager.service

    b.UserConsumer 代码

    @Component
    public class UserConsumer implements IUserConsumer {

    @Reference(version="1.0.0")
    IUserService iUserService;

    public User loginAdmin(User user) {
    return iUserService.loginAdmin(user);
    }
    }

    c.controller代码
    @Controller
    @RequestMapping("/user")
    public class userController {

    @Autowired
    private IUserConsumer userService;

    //登录
    @ResponseBody
    @RequestMapping("/loginAdmin")
    public Map<String,String> loginAjax(User user, String code,HttpSession session){
    Map<String,String> map=new HashMap<String,String>();
    String codet=(String)session.getAttribute("verCode");
    if(codet==null){
    map.put("flag","false");
    map.put("messages","请输入验证码!");
    }
    if(codet!=null && codet.equalsIgnoreCase(code)){
    map.put("flag","true");
    map.put("messages","验证码正确!");
    }
    if(codet!=null && !codet.equalsIgnoreCase(code)){
    map.put("flag","false");
    map.put("messages","验证码错误!");
    }
    User us =userService.loginAdmin(user);
    if(us!=null){
    session.setAttribute("user",us);
    map.put("flag","true");
    map.put("messages","登录成功!");
    }else{
    map.put("flag","false");
    map.put("messages","账户名或密码错误!");
    }
    return map;
    }


    //生成图片
    @RequestMapping("/authImage")
    public void authImage(HttpServletResponse response, HttpSession session) throws IOException {
    response.setHeader("Pragma", "No-cache");
    response.setHeader("Cache-Control", "no-cache");
    response.setDateHeader("Expires", 0);
    response.setContentType("image/jpeg");
    //生成随机字串
    String verifyCode = VerifyCodeUtils.generateVerifyCode(4);
    //存入会话session
    //删除以前的
    session.removeAttribute("verCode");
    session.setAttribute("verCode", verifyCode.toLowerCase());
    //生成图片
    int w = 100, h = 30;
    VerifyCodeUtils.outputImage(w, h, response.getOutputStream(), verifyCode);
    }



    }
    6.出现以下页面

     

    提供者项目debug,sql语句信息

    两个消费者wk-partol和wk-manager,这两个项目都是运行出现以下效果

    总结:提供者提供所需接口,消费者去调用,开发分工更清晰,方便。

     
  • 相关阅读:
    iOS 小技巧总结
    iOS 字符串常用编码互相转换
    iOS点击cell查看大图,点击大图还原小图
    Cocoapods配置
    匈牙利匹配
    ISAP网络流
    BZOJ 3262--陌上花开
    android应用找回签名问题jarsigner
    android定位混淆过后的crash问题
    axios++:防止重复提交全局统一拦截
  • 原文地址:https://www.cnblogs.com/wutongvip/p/10076977.html
Copyright © 2011-2022 走看看