spring boot常用注解整理
提示:以下是本篇文章正文内容,下面案例可供参考
此注解是spring boot项目的基石,创建springboot项目的application时会默认加上
@springbootapplicationpublic class springcurityapplication{ public static void main(strings[] args){ springapplication.run(springcurityapplication,args); }}
@springbootapplication 看作@configuration,@enableautoconfiguration,@componentscan 注解的集合
@enableautoconfiguration:启用springboot的自动配置机制
@componentscan:扫描被@component /@rvice/@controller注解的bean,注解默认会扫描该类所在的包下所有类
@configuration:允许在spring上下文中注册额外的bean或导入其他配置类
bean对象注册spring ioc容器与使用bean对象是整个spring框架的重点,其中@bean就是一个将方法作为spring bean对象注册的一种方式
package com.edu.fruit; //定义一个接口public interface fruit<t>{ //没有方法} /**定义两个子类*/package com.edu.fruit;@configuration public class apple implements fruit<integer>{//将apple类约束为integer类型}package com.edu.fruit;@configurationpublic class ginng implements fruit<string>{//将ginng 类约束为string类型}/**业务逻辑类*/package com.edu.rvice;@configuratio企业年度工作总结npublic class fruitrvice {@autowiredprivate apple apple;@autowiredprivate ginng ginng;//定义一个产生bean的方法@bean(name="getapple")public fruit<?> getapple(){system.out.println(apple.getclass().getname().hashcode); system.out.println(ginng.getclass().getname().hashcode);return new apple();}}/**测试类*/@runwith(blockjunit4classrunner.class)public class config { public config(){ super("classpath:spring-fruit.xml"); } @test public void test(){ super.getbean("getapple");//这个bean从哪来, //从上面的@bean下面的方法中返回的是一个apple类实例对象 }}
@autowired自动注入注解,最常用的一种注解将对象自动导入到类中,注解自动装配bean的类
@component:通用注解,当不知道bean在哪一层时,可以使用@component注解标注。
@repository: 对应持久层—dao层的注解,用于操作数据库相关
@rvice: 对应服务层的注解,用来连接dao层做逻辑处理
@controller:对应spring mvc控制层,主要接收用户请求并调用rvice返回给前端页面
@restcontroller注解是@controller注解和@responbody注解的合集,用来返回json格式给页面(带rest格式的就是返回的json文本)
声明spring bean的作用域
@scope("singleton")public person personsingleton(){ return new person();}
spring bean的四种作用域:singleton,prototype,request,ssion
一般声明配置类,使用@component或者@configuration
@configurantionpublic class appconfig{ @bean public transferrvice transferrvice(){ return new transferrviceimpl(); }}
@requtmapping是处理http请求的最通用注解
@requestmapping("/urs")public responentity<list<ur>> getallurs(){ return urrepository.findall();}
一般声明配置类,使用@component或者@configuration
@getmapping 就等价于@requestmapping(value=”/urs”,method =requtmethod.get)
即使用@getmapping就相当用接收get方法了
@getmapping("/urs")public responentity<list<ur>> getallurs(){ return urrepository.findall();}
@postmapping 就等价于@requestmapping(value=”/urs”,method =requtmethod.post)
即使用@postmapping就相当用接收post方法了
@postmapping("/urs")public responentity<list<ur>> getallurs(){ return urrepository.findall();}
@putmapping(“/urs/{urid}”)等价于@requestmapping(value = “/urs/{urid}”,method = requestmethod.put)
@putmapping("/urs/{urid}")public responentity<ur> updateur(@pathvariable (value ="urid")long urid, @valid @requestbody urupdaterequest urupdaterequest){...}
@deletemapping(“/urs/{urid}”)等价于@requestmapping(value =”/urs/{urid}”,method = requestmethod.delete)
@deletemapping("/urs/{urid}")public responentity deleteur(@pathvariable(value = "urid) long urid){...}
@pathvariable 用于获取路径参数, @requestparam用于获取查询参数
@getmapping("/urs/{urid}/teachers")public list<teacher> geturrelatedteachers(@pathvariable("urid") long urid,@requestparam(value = "type",required = fal) string type){...}
其中@pathvariable是获取请求中的{urid}值,@requestpara长江流经几个省m则是url读取请求中type的值
比如我们url请求中/urs/{123456}/teachers?type=chine 则我们在controller获取到的就是urid = 123456 , type = chine
另在@requestparam中 value=“参数名” required = “true/fal”(true表示参数不允许不存在,fal表示参数允许不存在) defaultvalue=”” 设置defaultvalue时默认required为fal。
用于读取request请求的body部分,且content-type为application/json格式数据,接收到数据后会自动将数据绑定在java对象上,系统会使用httpmessageconverter来讲请求的body中的json字符串转换为java对象
@postmapping("/sing-up")public responentity signup(@requtbody @valid urregisterrequest urregisterrequest){ urrvice.save(urregisterrequest); return responentity.ok().build()'}
这就是典型的requestbody在post请求里进行传输数据当后端controller接收到json格式的数据后,直接就会生成java对象映射到urregisterrequest类上,这样就可以直接将urregisterrequest对象进行存储。顺便说一下@valid注解是用
来验证数据格式是否符合要求,如果符合要求则通过,不符合要求,提示注解中message信息
读取application.yml的注解
wuhan2020: 武汉加油!中国加油!my-profile: name: name email: xxxx@qq.comlibrary: location: dalian books: - name: name1 description: description1 - name: name2 description: description2 - name: name3 description: description3
1.@value
使用@value(“${property}”)读取简单的配置信息
@value("${wuhan2020}")string wuhan2020;
2.@configurationproperties
通过@configurationproperties读取配置信息并与bean绑定
@component@configurationproperties(prefix = "library")class libraryproperties{ @notempty private string location; private list<book> books; @data @tostring static class book{ string name; string description; }}
当有多个同一类型的bean时,可以用@qualifier(“name”)来指定。与@autowired配合使用。@qualifier限定描述符除了能根据名字进行注入,但能进行更细粒度的控制如何选择候选者,具体使用方式如下:
@autowired @qualifier(value = “demoinforvice”) private demoinforvice demoinforvice;
spring-boot支持mybatis组件的一个注解,通过此注解指定mybatis接口类的路径,即可完成对mybatis接口的扫描。
它和@mapper注解是一样的作用,不同的地方是扫描入口不一样。@mapper需要加在每一个mapper接口类上面。所以大多数情况下,都是在规划好工程目录之后,通过@mapperscan注解配置路径完成mapper接口的注入。
添加mybatis沉淀杂质相应组建依赖之后。就可以使用该注解。
@crossorigin(origins = “”, maxage = 1000) 这个注解主要是为了解决跨域访问的问题。这个注解可以为整个controller配置启用跨域,也可以在方法级别启用。
@controlleradvice 和 @restcontrolleradvice:通常和@exceptionhandler、@initbinder、@modelattribute一起配合使用。
@controlleradvice 和 @exceptionhandler 配合完成统一异常拦截处理。
@restcontrolleradvice 是 @controlleradvice 和 @responbody的合集,可以将异常以json的格式返回数据。
如下面对数据异常返回的统一处理。
@importresource @import @propertysource 这三个注解都是用来导入自定义的一些配置文件。
@importresource(locations={}) 导入其他xml配置文件,需要标准在主配置类上。
导入property的配置文件 @propertysource指定文件路径,这个相当于使用spring的标签来完成配置项的引入。
@import注解是一个可以将普通类导入到spring容器中做管理
通过这个注解可以声明事务,可以添加在类上或者方法上。
在spring boot中 不用再单独配置事务管理,一般情况是我们会在rvcie层添加了事务注解,即可开启事务。要注意的是,事务的开启只能在public 方法上。并且主要事务切面的回滚条件。正常我们配置rollbackfor exception时溏心风暴插曲 ,如果在方法
里捕获了异常就会导致事务切面配置的失效。
到此这篇关于springboot常用注解详细整理的文章就介绍到这了,更多相关springboot常用注解内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 01:24:21,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/cfe709b261d3c07bc5f2b3ec9693027f.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:SpringBoot常用注解详细整理.doc
本文 PDF 下载地址:SpringBoot常用注解详细整理.pdf
留言与评论(共有 0 条评论) |