关于Spring常用基础的参数注解

环境搭建

jar包

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>2.2.2.RELEASE</version>
            <scope>test</scope>
        </dependency>

数据库

为了图方便我就不连接数据库了,写个静态代码块,后续都用这个

@RestController
public class AnnotionController {
    public static HashMap<Long, User> hashMap = new HashMap<>();
    static {
        hashMap.put(1L,new User(1L,"大1","大1"));
        hashMap.put(2L,new User(2L,"大2","大2"));
        hashMap.put(3L,new User(3L,"大3","大3"));
        hashMap.put(4L,new User(4L,"大4","大4"));
        hashMap.put(5L,new User(5L,"大5","大5"));
    }
}

项目结构

在这里插入图片描述

@PathVariable

是什么

通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到后端参数

怎么用

这是一个最基本的使用,根据url中用{}获取到这个占位符的数值来赋值给id

    @GetMapping("/get/{id}")
    public User get(@PathVariable("id") Long id){
        return hashMap.get(id);
    }

结果
在这里插入图片描述

@RequestParam

是什么

自己理解的方式是这样的
get请求我们经常用?a=1这种方式拼接在url后面,通过&可以拼接多个参数
所以get/?a=1&b=2&c=3代表拼接3个参数
但是url长度有限,所以参数过多的时候用post请求,把要传的参数放在请求体里
而这个注解可以获取到拼接在url后面的参数

怎么用

1.参数一致

什么是参数一致,就是凭借在url后面的参数和我们要接受的参数一致
比如get?id=1 这里参数是id,我们接受的参数也是id,这就是一致

    @GetMapping("/get")
    public User get2(@RequestParam("id") Long id){
        return hashMap.get(id);
    }

结果
在这里插入图片描述

2.参数不一致

凭借在url后面的参数不是id变成uid,这时候就可以用注解中的值来获取这个uid值赋值给我们要的参数

    @GetMapping("/get")
    public User get3(@RequestParam("uid") Long id){
        return hashMap.get(id);
    }

错误请求方式
在这里插入图片描述
正确的请求方式
在这里插入图片描述

@RequestBody

是什么

@requestBody是用来获取传递过来的请求体数据,并反序列化成自己想要的数据
所以一般搭配post请求用,但是我没记错的话应该不可以搭配get请求吧

怎么用

1.简单数据类型

不用,基本数据类型直接在url?的形式拼接在url后面

    @PostMapping("/add")
    public String add( String id){
        return "获得数据id="+id;
    }

结果
在这里插入图片描述
当然我们也可以放在请求体中用application/x-www-form-urlencoded方式提交
在这里插入图片描述

2.对象

如果不用@requestbody

    @PostMapping("/adduser")
    public User adduser(User user){
        hashMap.put(user.getId(),user);
        return hashMap.get(user.getId());
    }

可以通过拼接url组成这个对象
在这里插入图片描述
当然我们也可以放在请求体中用application/x-www-form-urlencoded方式提交
在这里插入图片描述
那么这个注解应该怎么用呢?

    @PostMapping("/adduser")
    public User adduser(@RequestBody User user){
        hashMap.put(user.getId(),user);
        return hashMap.get(user.getId());
    }

这时候应该以设置请求头application/json
然后json方式请求
在这里插入图片描述

3.集合

先看看方法

    @PostMapping("/adduser")
    public HashMap<Long, User> adduser(@RequestBody List<User> list){
        for (User user:list){
            hashMap.put(user.getId(),user);
        }
        return hashMap;
    }

如何请求
在这里插入图片描述
结果
在这里插入图片描述

结论

所有总归来说@RequestBody使用访问应该要
设置请求头Content-Type:application/json
然后后端才能够根据请求体中自动转化为对象
适合数据多的放在请求体中!

有问题或者写错了可以在下面评论!
深漂一年的精神小伙!
高速解答!!!

### 部署 Stable Diffusion 的准备工作 为了成功部署 Stable Diffusion,在本地环境中需完成几个关键准备事项。确保安装了 Python 和 Git 工具,因为这些对于获取源码和管理依赖项至关重要。 #### 安装必要的软件包和支持库 建议创建一个新的虚拟环境来隔离项目的依赖关系。这可以通过 Anaconda 或者 venv 实现: ```bash conda create -n sd python=3.9 conda activate sd ``` 或者使用 `venv`: ```bash python -m venv sd-env source sd-env/bin/activate # Unix or macOS sd-env\Scripts\activate # Windows ``` ### 下载预训练模型 Stable Diffusion 要求有预先训练好的模型权重文件以便能够正常工作。可以从官方资源或者其他可信赖的地方获得这些权重文件[^2]。 ### 获取并配置项目代码 接着要做的就是把最新的 Stable Diffusion WebUI 版本拉取下来。在命令行工具里执行如下指令可以实现这一点;这里假设目标路径为桌面下的特定位置[^3]: ```bash git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git ~/Desktop/stable-diffusion-webui cd ~/Desktop/stable-diffusion-webui ``` ### 设置 GPU 支持 (如果适用) 当打算利用 NVIDIA 显卡加速推理速度时,则需要确认 PyTorch 及 CUDA 是否已经正确设置好。下面这段简单的测试脚本可以帮助验证这一情况[^4]: ```python import torch print(f"Torch version: {torch.__version__}") if torch.cuda.is_available(): print("CUDA is available!") else: print("No CUDA detected.") ``` 一旦上述步骤都顺利完成之后,就可以按照具体文档中的指导进一步操作,比如调整参数、启动服务端口等等。整个过程中遇到任何疑问都可以查阅相关资料或社区支持寻求帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值