前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring注解笔记

Spring注解笔记

作者头像
liliane
发布2022-07-17 10:34:14
2590
发布2022-07-17 10:34:14
举报
文章被收录于专栏:liliane随笔

一、使用postman,测试post请求,出现error,发现原因是content_type类型不对。

1.get/post方式提交 @RequestParam可以接收get和post参数,处理content_type为application/x-www-form-urlencoded的请求,而content_Type为application/json、application/xml,则必须由@RequestBody处理,@RequestBody也可以处理application/x-www-form-urlencoded。 @RequestParam的本质是通过Request.getParameter()得到String类型的参数值,经ConversionService转为相应的简单类型。

2.put方式提交 application/x-www-form-urlencoded也必须由@RequestBody处理 因此,在注入参数时,需要根据类型选用@RequestParam或@RequestBody。 @PathVariable则用于接受通过url传递的参数,如RequestMapping(value="/getInnId/{innId} ") ,方法签名中通过 @PathVariable Integer innId取得。 而@ResponseBody用于将返回对象写入到Response的body,返回非html的json、xml。

二、使用注解声明bean @Component 适用各个层次 @Repository 持久层 @Service 业务层 @Controller 控制层 通过它们标注的class会自动创建相应的BeanDefine对象,加入applicationContext。 未添加注解,且未使用xml装配,会导致应用找不到bean。经验表明,MyBatis只需定义接口(无需写daoImpl)的方式,@Repository非必须,即定义Mapper接口时,不添加@Repository,程序能正常运行,但IDEA语法检查会提示:could not autowired。

三、通过注解使用bean @Autowired、@Resource、@Inject区别 这三个注解都是用以注入bean对象,@Autowired默认按类型注入,要用以按类型注入,需要结合@Qualifier(name)注解一起使用;@Resource默认按属性name值(=bean的id)注入;@Inject与@Autowired相近,默认按type注入。(参考:http://www.tuicool.com/articles/ruaMBn) @Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。   @Resource装配顺序   1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常   2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常   3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常   4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=qh098csnac45

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档