Dubbo + ZooKeeper 入门快速开发练习详解,java三年经验面试

dubbo_common

jar

User.java

package com.lichun.pojo;

import java.io.Serializable;

public class User implements Serializable {

private Integer id;

private String username;

private Integer age;

@Override

public String toString() {

return “User{” +

“id=” + id +

“, username='” + username + ‘’’ +

“, age=” + age +

‘}’;

}

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

}

4. 创建接口子模块

此模块,主要存放业务接口的定义,它是服务消费者模块和服务提供者模块的公共依赖模块

<?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”>

dubbo_parent

com.lichun

1.0-SNAPSHOT

4.0.0

dubbo_interface

jar

com.lichun

dubbo_common

1.0-SNAPSHOT

UserService.java

package com.lichun.service;

import com.lichun.pojo.User;

public interface UserService {

User findById(Integer id);

}

5. 创建服务提供者模块

只要能启动spring的容器(加载spring的配置文件)就可以启动项目,因此有三种启动项目方式:

  • ClassPathXmlApplication

  • 监听器

  • DispatcherServlet

注册中心验证:

在这里插入图片描述

注意:

  • 消费者与提供者应用名称不能相同

  • 如果有多个服务提供者,名称不能相同,通信端口也不能相同

  • 只有服务提供者才会配置服务发布的协议,默认是dubbo协议,端口号是20880

<dubbo:protocol name=“dubbo” port=“20881”></dubbo:protocol>

pom.xml

<?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">

dubbo_parent

com.lichun

1.0-SNAPSHOT

4.0.0

dubbo_provider

war

com.lichun

dubbo_interface

1.0-SNAPSHOT

org.springframework

spring-webmvc

com.alibaba

dubbo

org.apache.zookeeper

zookeeper

org.apache.curator

curator-framework

org.apache.curator

curator-recipes

org.mybatis

mybatis

org.mybatis

mybatis-spring

com.alibaba

druid

mysql

mysql-connector-java

org.springframework

spring-tx

org.springframework

spring-jdbc

org.slf4j

slf4j-log4j12

UserDao.java

package com.lichun.dao;

import com.lichun.pojo.User;

import org.apache.ibatis.annotations.Select;

public interface UserDao {

@Select(“select * from t_user where id = #{id}”)

User findById(Integer id);

}

UserServiceImpl.java

package com.lichun.service.impl;

import com.lichun.dao.UserDao;

import com.lichun.pojo.User;

import com.lichun.service.UserService;

import org.springframework.beans.factory.annotation.Autowired;

public class UserServiceImpl implements UserService {

@Autowired

UserDao userDao;

@Override

public User findById(Integer id) {

User user = userDao.findById(id);

return user;

}

}

MyApplicationContext.java

package com.lichun;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;

public class MyApplicationContext {

public static void main(String[] args) throws IOException {

new ClassPathXmlApplicationContext(“classpath:spring-provider.xml”);

System.in.read();

}

}

log4j.properties

direct log messages to stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target=System.err

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

set log levels - for more verbose logging change ‘info’ to ‘debug’

log4j.rootLogger=debug, stdout

spring-dao.xml

  • 配置数据源

  • 配置sqlSessionFactory对象

  • 扫描dao包,创建dao接口的动态代理对象

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns=“http://www.springframework.org/schema/beans”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd">

spring-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:tx=“http://www.springframework.org/schema/tx”

xsi:schemaLocation=“http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd”>

<tx:annotation-driven transaction-manager=“txManager”/>

spring-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://dubbo.apache.org/schema/dubbo”

xsi:schemaLocation=“http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd”>

<dubbo:application name=“dubbo_provider”/>

<dubbo:registry address=“zookeeper://127.0.0.1:2181”/>

<dubbo:service interface=“com.lichun.service.UserService” ref=“userService”/>

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xmlns=“http://java.sun.com/xml/ns/javaee”

xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”

version=“2.5”>

contextConfigLocation

classpath:spring-provider.xml

org.springframework.web.context.ContextLoaderListener

6. 创建服务消费者模块

pom.xml

<?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”>

dubbo_parent

com.lichun

1.0-SNAPSHOT

4.0.0

dubbo_consumer

war

com.lichun

dubbo_interface

1.0-SNAPSHOT

org.springframework

spring-webmvc

com.fasterxml.jackson.core

jackson-core

2.9.0

com.fasterxml.jackson.core

jackson-databind

2.9.0

com.fasterxml.jackson.core

jackson-annotations

2.9.0

javax.servlet

servlet-api

2.5

provided

com.alibaba

dubbo

org.apache.zookeeper

zookeeper

org.apache.curator

curator-framework

org.apache.curator

curator-recipes

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

Java面试核心知识点笔记

其中囊括了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。

蚂蚁金服(Java研发岗),26岁小伙斩获三面,收获Offer定级P6

Java中高级面试高频考点整理

蚂蚁金服(Java研发岗),26岁小伙斩获三面,收获Offer定级P6

蚂蚁金服(Java研发岗),26岁小伙斩获三面,收获Offer定级P6

最后分享Java进阶学习及面试必备的视频教学

蚂蚁金服(Java研发岗),26岁小伙斩获三面,收获Offer定级P6

或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-5qzpEXJ4-1712073167173)]
[外链图片转存中…(img-Zb5rRFFO-1712073167174)]
[外链图片转存中…(img-uXOpo3kb-1712073167174)]
[外链图片转存中…(img-cgZFO1XW-1712073167175)]
[外链图片转存中…(img-6ANEbn4B-1712073167175)]
[外链图片转存中…(img-9qrOO6EM-1712073167176)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-7O6TikBg-1712073167176)]

Java面试核心知识点笔记

其中囊括了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。

[外链图片转存中…(img-CLw1LEaS-1712073167177)]

Java中高级面试高频考点整理

[外链图片转存中…(img-dbri2Bwx-1712073167177)]

[外链图片转存中…(img-bEcI59bf-1712073167177)]

最后分享Java进阶学习及面试必备的视频教学

[外链图片转存中…(img-RvBm7sBI-1712073167178)]

  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值