dubbo整合nacos

2023-11-01


前言

dubbo一般的都是使用zookeeper作为注册中心,但是也可以使用nacos作注册中心,本文记录了使用idea在springboot下整合dubbo、nacos、mybatis流程,用于将来查看以及提供给小白傻瓜式整合步骤,含源码。
开发工具:idea


一、搭建工程框架

整体框架
在这里插入图片描述

新建maven空工程作为父工程

在这里插入图片描述
在这里插入图片描述
删除src文件夹,仅作为一个空的父工程:
在这里插入图片描述

新建服务提供者provider模块

在这里插入图片描述
在这里插入图片描述
服务提供者需要操作数据库,所以这里添加了mybatisplus、nacos、dubbo
在这里插入图片描述
删除没用的文件:
在这里插入图片描述

新建消费者 consumer模块

在这里插入图片描述
消费者不需要连接数据库,但是需要对外开放接口,所以模板选择了nacos、dubbo、web
在这里插入图片描述
在这里插入图片描述

新建公共接口interface模块

在这里插入图片描述
删除模块没用的文件后的工程构架:
在这里插入图片描述

二、各模块代码

2.1服务提供者 boot-user-service-provider

代码构架

在这里插入图片描述

pom文件依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>com.yunjia.gmall</groupId>
            <artifactId>boot-user-interface</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.4.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
            <version>2.7.4.1</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>1.1.4</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-config-spring-boot-starter</artifactId>
            <version>0.2.3</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.1.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.37</version>
        </dependency>

        <!--        mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3.1</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

    </dependencies>

配置文件application.yaml

server:
  port: 8010

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mytest?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

  application:
    name: boot-user-service-provider
  #需要将order-service这个服务,注册到本地8848的注册中心上去,所以我们需要指定注册中心的地址
  cloud:
    nacos:
#     注册中心 也就是连接到哪个nacos上
      discovery:
        server-addr: localhost:8848

#       如果使用域名的注册中心地址时,域名后面需要加80端口,否则服务注册不上去,要注意
#        server-addr: nacos.it235.com:80

#        将自己的服务注册到注册中心
        register-enabled: true
        namespace: b93daaf8-adae-4dc9-bf47-a812c650fd21
      #     配置中心
      config:
        server-addr: localhost:8848
#        配置格式
        file-extension: yaml
        prefix: custom-prefix
        namespace: b93daaf8-adae-4dc9-bf47-a812c650fd21

dubbo:
  protocol:
    port:
      20881
  registry:
    address: nacos://127.0.0.1:8848

mapper

新建mapper.UserMapper,这个是用于mybatisplus使用的

package com.yunjia.gmall.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yunjia.gmall.bean.User;

public interface UserMapper extends BaseMapper<User> {
}

service

新建service.UserServiceDataSource,这个是用于privider层使用mybatis用的

package com.yunjia.gmall.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yunjia.gmall.bean.User;

public interface UserServiceDataSource extends IService<User> { }

新建service.impl.UserServiceDataSourceImpl,UserServiceDataSource的实现

package com.yunjia.gmall.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yunjia.gmall.bean.User;
import com.yunjia.gmall.mapper.UserMapper;
import com.yunjia.gmall.service.UserServiceDataSource;
import org.springframework.stereotype.Service;

@Service
public class UserServiceDataSourceImpl extends ServiceImpl<UserMapper, User> implements UserServiceDataSource {
}

新建service.impl.UserServiceImpl,这个是公共接口模块interface里面的UserService实现,消费者操作数据库的增删改查就是在这里实现的

package com.yunjia.gmall.service.impl;

import com.yunjia.gmall.service.UserServiceDataSource;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.Service;
import com.yunjia.gmall.bean.User;
import com.yunjia.gmall.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;

@Service  //暴露服务
@Slf4j
public class UserServiceImpl implements UserService {

    @Autowired
    UserServiceDataSource userServiceDataSource;

    @Override
    public List<User> getAllUser() throws Exception {
        List<User> users = userServiceDataSource.list();
        return users;
    }

    @Override
    public User getUserById(Long userId) throws Exception {
        //数据库
        System.out.println("getUserById 收到了请求,userId:" + userId);
        User user = userServiceDataSource.getById(userId);
        if (user  == null){
            System.out.println("查询到空对象");
            return null;
        }
        System.out.println("查询到的数据库对象:" + user.toString());
        return user;
    }

    @Override
    public User updateUser(User user) throws Exception {
        boolean ret = userServiceDataSource.updateById(user);
        if (!ret){
            log.info("更新用户信息失败");
            return null;
        }
        return user;
    }

    @Override
    public User saveUser(User user) throws Exception {
        boolean ret = userServiceDataSource.save(user);
        if (!ret){
            log.info("新增用户失败");
            return null;
        }
        return user;
    }

    @Override
    public boolean deleteUser(Long userId) throws Exception {
        System.out.println("userId:" + userId);
        boolean ret = userServiceDataSource.removeById(userId);
        if (!ret){
            log.info("删除失败");
            return false;
        }
        return true;
    }
}

启动类

添加dubbo使能注释以及mapper扫描注解

package com.yunjia.gmall;

import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@EnableDubbo
@SpringBootApplication
@MapperScan("com.yunjia.gmall.mapper")
public class BootUserServiceProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(BootUserServiceProviderApplication.class, args);
    }
}

2.2服务消费者 boot-user-service-consumer

代码构架

在这里插入图片描述

pom文件依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.4.1</version>
        </dependency>

        <dependency>
            <groupId>com.yunjia.gmall</groupId>
            <artifactId>boot-user-interface</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
            <version>2.7.4.1</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>1.1.4</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-config-spring-boot-starter</artifactId>
            <version>0.2.3</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.1.3.RELEASE</version>
        </dependency>

        <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-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

配置文件

# 应用名称
spring.application.name=boot-user-service-consumer
dubbo.registry.protocol=dubbo
dubbo.registry.address=nacos://127.0.0.1:8848
# dubbo 协议
dubbo.protocol.id=dubbo
dubbo.protocol.name=dubbo
# dubbo 协议端口( -1 表示自增端口,从 20880 开始)
dubbo.protocol.port=-1
# Dubbo 消费端订阅服务端的应用名,多个服务提供者用逗号分隔
# 这里订阅"自己",会被忽略掉,请根据实际情况添加
dubbo.cloud.subscribed-services=boot-user-service-consumer
# dubbo 服务扫描基准包
dubbo.scan.base-packages=com.yunjia.gmall
# 应用服务 WEB 访问端口
server.port=8080
# Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
# Nacos认证信息
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
# Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
spring.cloud.nacos.discovery.server-addr=mse-6d50f4f0-p.nacos-ans.mse.aliyuncs.com:8848
# 注册到 nacos 的指定 namespace,默认为 public
spring.cloud.nacos.discovery.namespace=public

#数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/mytest?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

bean

新建bean.Result文件,用于接口返回格式的统一

package com.yunjia.gmall.bean;

import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data;

/**
 * 响应体,主要用来做接口统一返回格式
 */
@Data
public class Result {
    // 定义jackson对象
    private static final ObjectMapper MAPPER = new ObjectMapper();

    // 响应业务状态
    private Integer status;

    // 响应消息
    private String msg;

    // 响应中的数据
    private Object data;

    public Result() {
    }

    public Result(Integer status, String msg, Object data) {
        this.status = status;
        this.msg = msg;
        this.data = data;
    }

    public Result(Object data) {
        this.status = 0;
        this.msg = "OK";
        this.data = data;
    }

    public static Result ok() {
        return new Result(null);
    }

    public static Result ok(Object data) {
        return new Result(data);
    }

    public static Result build(Integer status, String msg) {
        return new Result(status, msg, null);
    }

    public static Result build(Integer status, String msg, Object data) {
        return new Result(status, msg, data);
    }
}

新建bean.User,类对象

package com.yunjia.gmall.bean;

import lombok.Data;

import java.io.Serializable;

@Data
public class User implements Serializable {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

controler

新建Controller.UserController,接受并返回对外接口

package com.yunjia.gmall.Controller;

import com.yunjia.gmall.bean.Result;
import com.yunjia.gmall.bean.User;
import com.yunjia.gmall.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.*;

import java.io.ByteArrayInputStream;
import java.io.ObjectInputStream;
import java.util.List;

@RestController
@Slf4j
@RequestMapping("/user")
@ResponseBody
public class UserController {

    @Reference
    private UserService userService;

    /**
     * 查询所有记录
     * @param
     * @return
     */
    @RequestMapping(value = "/getAllUser",method = RequestMethod.POST)
    public Result getAllUser() throws Exception {
        List<User> users = userService.getAllUser();
        if (users.size() == 0){
            return Result.build(-1,"未查询到信息");
        }
        return Result.ok(users);
    }

    /**
     * 根据id获取数据
     * @param
     * @return
     */
    @RequestMapping(value = "/getUserById",method = RequestMethod.POST)
    public Result getUserById(@RequestBody User user) throws Exception {
        log.info("收到了请求:" + user.getId());
        Object selectRet = userService.getUserById(user.getId());
        if (selectRet == null){
            System.out.println("空对象");
            return Result.build(-1,"未查询到信息");
        }
        User userSelect = (User) selectRet;
        log.info("查到了对象:" + userSelect);
        return Result.ok(userSelect);
    }

    /**
     * 根据用户Id更新用户信息
     * @param user
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/updateUser",method = RequestMethod.POST)
    public Result updateUser(@RequestBody User user) throws Exception {
        User ret = userService.updateUser(user);
        if (ret == null){
            return Result.build(-1,"更新失败");
        }
        return Result.ok(ret);
    }

    /**
     * 新增用户信息
     * @param user
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/saveUser",method = RequestMethod.POST)
    public Result saveUser(@RequestBody User user) throws Exception {
        User ret = userService.saveUser(user);
        if (ret == null){
            return Result.build(-1,"新增用户失败");
        }
        return Result.ok(ret);
    }

    /**
     * 根据用户Id删除用户信息
     * @param user
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/deleteUser",method = RequestMethod.POST)
    public Result deleteUser(@RequestBody User user) throws Exception {
        System.out.println("收到请求,参数:" + user.toString());
        boolean ret = userService.deleteUser(user.getId());
        if (!ret){
            return Result.build(-1,"删除用户失败");
        }
        return Result.ok();
    }
}

其他文件,包括启动类等,无变化,不需要调整。

2.3公共接口boot-user-interface

bean

新建bean.User,类对象

package com.yunjia.gmall.bean;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.io.Serializable;

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@TableName("user")
public class User implements Serializable {
    @TableId(type= IdType.AUTO) //解决新增数据自增id很大的问题
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

service

新建user.UserService,定义接口,具体的实现在服务提供者那里

package com.yunjia.gmall.service;

import com.yunjia.gmall.bean.User;

import java.util.List;

public interface UserService {

    /**
     * 获取所有用户信息
     * @return
     * @throws Exception
     */
    public List<User> getAllUser() throws Exception;

    /**
     * 根据用户Id查询用户信息
     * @param userId
     * @return
     */
    public User getUserById(Long userId) throws Exception;

    /**
     * 根据用户Id更新用户信息
     * @param user
     * @return
     * @throws Exception
     */
    public User updateUser(User user) throws Exception;

    /**
     * 新增用户信息
     * @param user
     * @return
     * @throws Exception
     */
    public User saveUser(User user) throws Exception;

    /**
     * 根据用户Id删除用户信息
     * @param userId
     * @return
     * @throws Exception
     */
    public boolean deleteUser(Long userId) throws Exception;
}

三、测试

启动工程

把服务提供者、服务消费者工程启动后,如果我们开启了nacos管理台,就可以看到,服务提供者和消费者都已经和注册中心连上了。关于nacos的详细使用以及管理台的开启,文章后面附上了详细文章的链接,感兴趣可以后面移步查看。
在这里插入图片描述

新增

在这里插入图片描述

删除

在这里插入图片描述

修改

在这里插入图片描述

查询

在这里插入图片描述


总结

1、源码:

点击下载工程源码

2、springboot整合mybatis:

点击查看springboot整合mybatisplus详细流程

3、springboot使用nacos:

点击查看nacos的搭建

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dubbo整合nacos 的相关文章

  • org.springframework.validation.BeanPropertyBindingResult异常

    嗨 我是 spring 框架的新手 我做了一个小例子 我尝试使用 spring 验证 api 验证我的输入字段 这是代码 RequestMapping value applicationFormSubmit method RequestMe
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 如何修复 JNLP 应用程序中的“缺少代码库、权限和应用程序名称清单属性”?

    随着最近的 Java 更新 许多人都遇到了缺少 Java Web Start 应用程序的问题Codebase Permissions and Application name体现属性 尽管有资源可以帮助您完成此任务 但我找不到任何资源综合的
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • IDEA 文件不生效 红色

    之前工程在IDEA里都是好好的 也不知道为啥 突然就开始有一个文件的所有定义在其他文件里都找不到了 显示为红色 跳转不到定义 而事实上那个文件是存在的 我好久都没动它了 同一个目录下的其他文件都是正常的 网上搜索IDEA 文件 红色 很多人
  • The connection to the server localhost:8080 was refused - did you specify the right host or port

    根据这个教程https kuboard cn install install k8s html安装K8S的过程中 我在worker node master node都安装好了教程里所需的东西 但是在master node启动kuboard进
  • 和你说清楚什么是RoadMap/产品路线图

    Roadmap 产品蓝图如何设计 www woshipm com 2015 03 26 Roadmap通常翻译为 路线图 或 蓝图 目前并没有一个公认的定义 在这里 我们认为Roadmap是产品经理进行产品管理的一个中长期规划 也称路标规划
  • xss-labs部分题目

    xss labs level 1 第一关是搜索到的教程 因为啥都不明白 然后就是没有搜索框 就直接使用get的方式传值 归根结底还是html 让name test 输入的内容代替到了的是test的那一处 输入name test gt 然后弹
  • springboot只对某个特定的类或属性进行自定义的序列化和反序列化操作

    如果你需要对某个特定的类或属性进行自定义的序列化和反序列化操作 可以按以下步骤使用自定义的 Jackson ObjectMapper 进行相应的配置和定制化 创建一个继承自 Jackson 的 StdSerializer 或 StdDese
  • 【Git学习】7.分支(branch)的合并(merge)冲突

    在xiaokeai 1 py修改一下 添加提交 可以使用commit am 转到dev分支 dev分支的xiaokeai 1 py 修改一下 这个修改和master分支不一样 添加提交 回到master分支 还记得master分支的xiao
  • 理请求时出现未知错误.服务器返回的状态码为: 500,在服务器上处理请求时出现未知错误。服务器返回的状态码为500...

    操作方法 为页面的ScriptManager控件添加EnablePartialRendering false 的属性 此方法不是直接解决或规避问题的 是为了将详细的页面错误显示出来 以便找到需要修正 的地方 个人觉得这才是正道嘛 不能躲避错
  • 02 Oracle 批量导出建表语句和数据

    1 点击 工具 导出表 2 点击SQL插入 然后选中要导出的表 如果不选择表则导出全部表 选择导出文件的位置 点击导出 转载于 https www cnblogs com xiaonengxiong p 11514575 html
  • Console输出时报log4j警告解决办法

    log4j WARN Please initialize the log4j system properly org springframework context support ClassPathXmlApplicationContex
  • Spring动态代理的两种方式

    Spring动态代理的两种方式 1 Spring创建的动态代理类在哪 1 1 什么叫动态字节码技术 2 JDK的动态代理 2 1 Proxy newProxyInstance 法参数详解 2 1 编码 3 CGlib的动态代理 3 1 编码
  • 浏览器地址栏输入一个网址到页面展示网页内容的这段时间内,浏览器和服务器都发生了什么事情?

    1 在接受到用户输入的网址后 浏览器会开启一个线程来处理这个请求 对用户输入的URL地址进行分析判断 如果是HTTP协议就按照HTTP方式来处理 2 调用浏览器引擎中的对应方法 比如WebView中的loadUrl方法 分析并加载这个URL
  • UE5 添加插件

    1 编辑 gt 插件 gt 添加 2 选择插件类型 输入插件名称 设置插件目录 点击 创建插件 3 在工程目录下生成Plugins目录 而且在Plugins目录下生成各个插件的目录
  • 爽,我终于掌握了selenium图片滑块验证码

    因为种种原因没能实现愿景的目标 在这里记录一下中间结果 也算是一个收场吧 这篇文章主要是用selenium解决滑块验证码的个别案列 思路 用selenium打开浏览器指定网站 将残缺块图片和背景图片下载到本地 对比两张图片的相似地方 计算要
  • typeScript中tsconfig.json无故报错

    报错 原因 是由于该文件的同级目录下 没有ts文件 所以会报这种类似于语法错误的 只要在同级下创建一个ts文件即可
  • 回调函数的用法和好处

    回调函数的用法和好处 2009 07 01 18 19 Agzer0 分类 其他编程语言 浏览7080次 1 回调函数的功能是什么 有什么好处 有没有坏处 2 可以的话请编写一个简答的回调函数 看看怎样调用实现的 WndProc里面的不算
  • 数据结构2.4.1顺序队列

    include
  • [1] quick-cocos2d-x 介绍

    quick cocos2d x 是一个可以让您觉得 爽快 的 cocos2d x 的扩展版 基于 cocos2d x 完全的跨平台能力 优异的性能和可靠性 而 quick cocos2d x 在这一切的基础上 添加了完善的 Lua 脚本语言
  • MySQL基础语法--(标量子查询,列子查询,行子查询)

    概念 出现在其他语句内部的SELECT 语句 可以理解为嵌套在一个查询语句中的另外一个SELECT的查询语句 外部查询语句称为主查询或者外查询 分类 按照子查询出现的位置 select 后面 FROM 后面支持表子查询 WHERE 或HAV
  • C语言注释风格(函数、功能、输入、输出、返回)

    C语言编程规范 注释 规则 1 一般情况下 源程序有效注释量必须在20 以上 说明 注释的原则是有助于对程序的阅读理解 在该加的地方都加了 注释不宜太多也不能太少 注释语言必须准确 易懂 简洁 2 说明性文件 如头文件 h文件 inc文件
  • dubbo整合nacos

    文章目录 前言 一 搭建工程框架 新建maven空工程作为父工程 新建服务提供者provider模块 新建消费者 consumer模块 新建公共接口interface模块 二 各模块代码 2 1服务提供者 boot user service