springboot使用研究

map-underscore-to-camel-case: true

开启驼峰命名

   @GetMapping("/userInfo")
    public Result<Users>  userInfo(@RequestHeader(name = "Authorization") String token,HttpServletResponse  response) {
        Map<String, Object> map = JwtUtil.parseToken(token);
//        System.out.println(","+map.get("user")+"."+map.get("user"));

        String username =(String) map.get("username");
        Users u = usersService.findByUserName(username);

        return Result.success(u);
    }

threadlocal

相当于全局变量

//全局变量 全局共享变量
public class ThreadLocalUtils {
    private static ThreadLocal THREAD_LOCAL = new ThreadLocal();
//    根据键值对取值
    public static <T> T get() {
        return (T)THREAD_LOCAL.get();
    }
//    存储键值对
    public static void set(Object o) {
        THREAD_LOCAL.set(o);
    }
//    清除 防止内存泄露
    public static void remove() {
        THREAD_LOCAL.remove();
    }
}

线程安全的

// 根据用户名查询
    @Select("select * from users where username=#{username}")
    Users findByUserName(String username);


    //    添加注册
//    @Insert("insert into users(username,password,create_time,update_time) values(#{username},#{possword},now(),now())")
//    void add(String username, String possword);
    @Insert("insert into users(password,username) values(#{possword},#{username})")
    void add(@Param("possword")String possword, @Param("username")String username);

    @Select("select * from users where username=#{username} and password=#{possword}")
    Users find(@Param("username")String username, @Param("possword")String possword);

    @Update("update users set nickname=#{nickname},email=#{email},update_time=#{updateTime} where id=#{id}")
    void update(Users u);

Notnull  不能为null

notempty 不能为null并且不能为空

emai  email格式校验

@validated 满足的实体进行生效

@pattern

添加validated才能够生效

@URL 判断是否为url地址

    @Update("update users set password=#{newpwd},update_time=now() where id=#{id}")
    void updatePwd( @Param("newpwd")String newpwd, @Param("id") Integer id);
     <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>persistence-api</artifactId>
            <version>1.0</version>
        </dependency>

添加依赖  使用

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
 
@Entity
public class ExampleEntity {
    @Id
    private Long id;
 
    @Column(name = "\"order\"") // 使用双引号来包围关键字
    private String order;
 
    // 省略getter和setter
}

使用redis进行token失效  主动失效

集成redis

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

  data:
    redis:
      host: 127.0.0.1
      port: 6379

//这个注解,单元测试执行之前,先初始化这个容器
@SpringBootTest
public class redistest {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    @Test
    public  void test(){
//        向redis中添加键值对
        ValueOperations<String,String> valueOperations =  stringRedisTemplate.opsForValue();
        valueOperations.set("username","world");
//        秒过期
        valueOperations.set("id","1", 15,TimeUnit.SECONDS);
//        String hello = valueOperations.get("username");
//        System.out.println(hello);
    }

    @Test
    public  void gettest(){
//        向redis中添加键值对
        ValueOperations<String,String> valueOperations =  stringRedisTemplate.opsForValue();
//        valueOperations.set("username","world");
        String hello = valueOperations.get("id");
        System.out.println(hello);
    }
}

redis的操作


//                删除redis某个key
                ValueOperations<String,String> val = stringRedisTemplate.opsForValue();
                val.getOperations().delete("token");
   String token1 = stringRedisTemplate.opsForValue().get("token");
        if(token1==null){
            throw new RuntimeException();
        }else{

        }

拦截器拦截中的token判断

 <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>

打包jar包

打包

打包之后的位置

jar -jar jar包名称

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.1.0</version>
</plugin>
    <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
            </plugin>

打包用的配置plugin

改为false

修改端口   java -jar big.jar  --server.port=9999

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/597337.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java | Spring框架|Bean的装配之注解配置

Spring | Bean的装配之 注解配置&#xff1a;简化配置的新标准 Spring框架的注解配置是近年来流行的配置方式&#xff0c;它通过在Java代码中使用注解来简化Bean的配置。这种方式减少了XML配置文件的使用&#xff0c;使得Bean的定义更加直观和简洁。 一、 使用注解定义Bean …

Problem 5: Whack-A-Mole打地鼠

实战题&#xff1a;打地鼠 内容如附件所示&#xff1a; 测试数据为:1,2,4,8,9,10,11,14 答案为&#xff1a;10,2,4 原始分布&#xff1a; 击打10号 击打2号 击打4号 要求&#xff0c;所示实例解以图示的方式给出&#xff0c;并且5组测试数据都需要测试&#xff0c;…

软件工程案例学习-图书管理系统-面向对象方法

文档编号&#xff1a;LMS_1 版 本 号&#xff1a;V1.0 ** ** ** ** ** ** 文档名称&#xff1a;需求分析规格说明书 项目名称&#xff1a;图书管理系统 项目负责人&#xff1a;计敏 胡杰 ** ** …

开式双比例泵控制放大器

比例泵PQ控制放大器的主要作用是通过接收来自控制器的信号&#xff0c;并将其转换为适当的电流信号&#xff0c;以驱动变量泵。这种控制方式可以实现对泵输出流量和压力的精确控制&#xff0c;从而实现节能和提高效率的目的。比例泵PQ控制放大器通常用于节能型泵控制系统中&…

【Linux系列】tail查询使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【6D位姿估计】ZebraPose 层次化分组策略 由粗到细的表面编码

前言 本文介绍6D位姿估计的方法ZebraPose&#xff0c;也可以称为六自由度物体姿态估计&#xff0c;输入单张图片&#xff0c;输出物体的三维位置和三维方向。 它来自CVPR2022的论文&#xff0c;通过层次化分组策略&#xff0c;高效地编码物体表面的信息。 ZebraPose提出了一…

运维自动化之 ansible

目录 一 常见的自动化运维工具 &#xff08;一&#xff09;有哪些常见的 自动化运维工具 &#xff08;二&#xff09;为什么后面都变成用 ansible 二 ansible 基本介绍 1&#xff0c; ansible 是什么 2&#xff0c;ansible能干什么 3&#xff0c;ansible 工作原…

Linux网络—PXE高效批量网络装机

目录 一、部署PXE远程安装服务 1、搭建PXE远程安装服务器 1&#xff09;安装并启用 TFTP 服务 2&#xff09;安装并启用 DHCP 服务 3&#xff09;准备 Linux 内核、初始化镜像文件 4&#xff09;准备 PXE 引导程序 5&#xff09;安装FTP服务&#xff0c;准备CentOS 7 安…

OpenCV 入门(一) —— OpenCV 基础

OpenCV 入门系列&#xff1a; OpenCV 入门&#xff08;一&#xff09;—— OpenCV 基础 OpenCV 入门&#xff08;二&#xff09;—— 车牌定位 OpenCV 入门&#xff08;三&#xff09;—— 车牌筛选 OpenCV 入门&#xff08;四&#xff09;—— 车牌号识别 OpenCV 入门&#xf…

Springboot框架web开发实用功能-02

在些模块中汇总了一些web开发常用的配置和功能。 涉及的模块 springboot-common-config&#xff0c; 端口号&#xff1a;17000 Springboot框架web开发常用功能 Restful接口定义 查询参数 Data public class QueryParam {private String key;private String value; }Control…

MATLAB实现杜拉德公式和凯夫公式的计算固液混合料浆临界流速

MATLAB实现杜拉德公式和凯夫公式的计算固液混合料浆临界流速: 杜拉德公式是用来计算非均质固液混合料浆在输送管中的临界速度的公式&#xff0c;具体形式为&#xff1a; uL FL (2gD / (ρ0 - ρ1))^(1/2) 其中&#xff1a; uL&#xff1a;表示料浆的临界速度&#xff0c;…

Hbase 常用shell操作

目录 1、创建表 1.1、启动HBase Shell 1.2、创建表 1.3、查看表 1.4、删除表 2、插入数据 2.1、put命令 3、查看数据 3.1、get命令 3.2、查询数据中文显示 4、更新数据 4.1、使用put来更新数据 5、删除数据 5.1、delete命令 5.2、删除指定列的数据 5.3、delete…

Pycharm debug 运行报错 (RuntimeError: cannot release un-acquired lock)

问题描述&#xff1a; 最近再跑一个 flask应用&#xff0c;Pycharm 运行没问题&#xff0c;debug断点启动时报错 如下&#xff1a; 解决方案&#xff1a; 在环境变量中增加 GEVENT_SUPPORTTrue 启动成功&#xff01;

libcity笔记:添加新模型(以RNN.py为例)

创建的新模型应该继承AbstractModel或AbstractTrafficStateModel 交通状态预测任务——>继承 AbstractTrafficStateModel类轨迹位置预测任务——>继承AbstractModel类 1 AbstractTrafficStateModel 2 RNN 2.1 构造函数 2.2 predict 2.3 calculate_loss

博客系统项目测试报告

文章目录 一.报告概要二.测试环境三.手工测试用例四.编写测试用例五.自动化测试Selenium测试项目主要特点 一.报告概要 项目概要 本项目是一个全功能的个人博客系统&#xff0c;旨在提供一个用户友好、功能全面的平台&#xff0c;允许用户注册、登录、浏览博客、查看详细内容、…

Mac跑llama.cpp过程中遇到的问题

原repo 在华为手机上安装termux、下载库&#xff1a;顺利在电脑上安装Android NDK&#xff1a;先下载Android Studio&#xff0c;再在里面下载Android SDK 安装Android Studio时&#xff0c;SDK的某些组件总是下载不成功。后来关了梯子、改了hosts&#xff0c;重新安装就成功了…

Golang | Leetcode Golang题解之第73题矩阵置零

题目&#xff1a; 题解&#xff1a; func setZeroes(matrix [][]int) {n, m : len(matrix), len(matrix[0])col0 : falsefor _, r : range matrix {if r[0] 0 {col0 true}for j : 1; j < m; j {if r[j] 0 {r[0] 0matrix[0][j] 0}}}for i : n - 1; i > 0; i-- {for …

Go实现树莓派控制舵机

公式说明 毫秒&#xff08;ms&#xff09;是时间的单位&#xff0c;赫兹&#xff08;Hz&#xff09;是频率的单位&#xff0c;而DutyMax通常是一个PWM&#xff08;脉冲宽度调制&#xff09;信号中表示最大占空比的值。以下是它们之间的关系和一些相关公式&#xff1a; 频率&…

【华为】路由策略小实验

【华为】软考中级-路由策略实验 实验需求拓扑配置AR1AR2需求1需求2 AR3 检验 实验需求 1、让 R3 可以学到R1的 192.168.10.0/24和192.168.20.0/24的 路由&#xff0c;不能学到192.168.30.0/24。 2、让 R1可以学到 R3 的 172.16.20.0/24和172.16.30.0/24的路由&#xff0c;不能…

opencv图像处理详细讲(二)

联通组件分析 联通组件定义&#xff1a;像素值相同&#xff0c;通过四邻域或者八邻域相互连通的像素块。 换句话说&#xff0c;就是使用四邻域或八邻域的连通性&#xff0c;遍历图像的像素&#xff0c;并确定像素值相同并且连通的像素块&#xff0c;将它们标记为一个联通组件 两…