🔥 了解 Solon MVC 的参数注入规则
关于 Solon MVC 参数注入,主要尊守以下基本规则:
- 参数名与请求数据名一一对应。
- 当对上不上时,会采用整体数据注入(如果接收的是实体)
- 参数名与请求数据同名时,又想整体注入(如果接收的是实体),可使用
@Body
注解强制标注
1、表单参数注入
请求样本数据:
GET http://localhost:8080/demo?select=1&select=2&user=noear
支持单字段注入(要求参数名,与请求数据名一一对应)
@Controller public class DemoController{ @Mapping("demo") public void demo(String[] select, String user){ } }
支持整体注入(要求参数名,不能与请求数据名对应)
public class PostDo{ public String[] select; public String user; } @Controller public class DemoController{ @Mapping("demo") public void demo(PostDo postDo){ //参数名,不能是 select 或 user } @Mapping("demo") public void demo(@Body PostDo user){ //参数名如果与数据名相同。需要使用 @Body 来标明它是接收所有请求数据 } }
2、结构型参数注入(类似 properties 格式参数)
请求样本数据:
- ?user.id=1&user.name=noear&user.type[0]=a&user.type[1]=b
- ?type[]=a&type[]=b
- ?order[id]=a
此特性,需要引入序列化插件:solon-serialization-properties。规则细节参考“序列化数据注入”。
3、序列化数据注入(比如 json, hessian, protostuff, fury)
请求样本数据:
POST http://localhost:8080/demo {user:'noear',select:[1,2],data:{code:1,label:'b'}}
支持单字段注入(要求参数名,与请求数据的一级字段名对应)
@Controller public class DemoController{ @Mapping("demo") public void demo(String[] select, String user){ } }
支持整体注入(要求参数名,不能与请求数据的一级字段名对应)
public class PostDo{ public String[] select; public String user; } @Controller public class DemoController{ @Mapping("demo") public void demo(PostDo postDo){ //参数名,不能是 select 或 user } @Mapping("demo") public void demo(@Body PostDo user){ //参数名如果与数据名相同。需要使用 @Body 来标明它是接收所有请求数据 } }
支持局部注入(要求参数名,不能与请求数据名对应)
public class PostDo{ public String[] select; public String user; } public class DataDo{ public int code; public String label; } @Controller public class DemoController{ @Mapping("demo") public void demo(PostDo postDo, String user, DataDo data){ //postDo 接收整体数据,user,data 接收局部数据 } }
4、关于枚举注入
- 基本结构的,传入 name 可自动转换
- 定制结构的,参考下面的“特殊类型”
5、特殊类型的注入转换
- 表单数据注入时
借助"转换器",比如请求 ?demo=1
要转换成实体 Demo。示例:
@Component public class DemoConverter implements Converter<String, Demo> { @Override public Demo convert(String value) throws ConvertException { return Demo.parse(value); } } //应用示例(http://....?demo=1。 通过转换器把 1 转为 Demo 实体) @Controller public class DemoController { @Mapping("test") public void test(Demo demo){ } }
- 序列化数据注入
这个需要,给序列化组件添加对应的解码器,或者使用其特定的注解或特性。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
11 月 16-17 日 | 大湾区国际创客峰会 openKylin 展区等你来玩!
2024年11月16-17日,大湾区国际创客峰会暨Maker Faire Shenzhen (简称 MFSZ)将在深圳南山万科云设计公社举办。自2012年落地深圳以来,MFSZ 一直致力于推动深圳本土硬件创新生态与国际化科技创新的交流,共吸引来自全球近百个国家、上千个创客团队,累积接待专业观众50万+人次,是中国最具影响力的创客交流活动之一。 作为创客圈子交流协作的大型盛会,本届峰会以“万物皆可AI”为主题,聚焦科技创新与传统产业的跨界融合,展示人工智能与各产业融合的丰富可能性。今年的峰会将持续汇聚各路英豪,促进创客社区与人工智能产业的交流与合作。通过多元且包容的活动版块,激发创新项目,探索如何应对 AI 技术和市场变革带来的挑战,推动人工智能技术在创客领域的应用和普及。 今年,openKylin社区RISC-V SIG团队将在这个汇聚全球创客、极客和创新者的盛会上,设立专属展位(G24),带来团队在RISC-V+AI领域的最新成果展示,与大家共同探索开源的无限可能。 欢迎各位小伙伴来openKylin展位玩耍~ 询问AI
- 下一篇
开源共创,你我同行 | 2024 openKylin 社区贡献者荣耀征集
为表彰于2024年度在openKylin做出杰出贡献的组织、团队和个人,并激励更多开发者参与进来共同促进社区繁荣与发展,openKylin社区现面向全球公开征集2024年度优秀贡献者案例。 即日起至2024年11月30日,接受贡献者评选报名,评选结果将于12月6日在官网公布,颁奖典礼将在2024 openKylin伙伴暨开发者年度会议上进行。诚邀社区共建伙伴积极参与推荐,一起见证这一荣耀时刻! 询问AI
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- Linux系统CentOS6、CentOS7手动修改IP地址
- 2048小游戏-低调大师作品
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案