我想到的一个好点子总结的ssm到springboot用到的注解(1)

本文详细介绍了Spring中的关键注解,如@Configuration、@Autowired、@RestController等,涵盖自动装配、配置文件、控制器、线程处理和跨域等,帮助理解Spring MVC开发中的常见实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spring注解

1.@Configuration注解(很重要)

该类等价 与XML中配置beans,相当于Ioc容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean,与xml中配置的bean意思一样。
@Configuration注解的类必需使用context:component-scanbase-package=”XXX”/扫描

2.@Value注解(重要)

为了简化从properties里取配置,可以使用@Value, 可以properties文件中的配置值。
在dispatcher-servlet.xml里引入properties文件。

3. @Controller, @Service, @Repository,@Component(很重要)

目前4种注解意思是一样,并没有什么区别,区别只是名字不同。使用方法:
使用context:component-scanbase-package=”XXX”/扫描被注解的类
在类上写注解

4. @PostConstruct 和 @PreDestory

这个不是很了解。就是总结别人的,我就是个搬运工:我能想到的就是跟生命周期有关吧
实现初始化和销毁bean之前进行的操作,只能有一个方法可以用此注释进行注释,方法不能有参数,返回值必需是void,方法需要是非静态的。
@PostConstruct:在构造方法和init方法(如果有的话)之间得到调用,且只会执行一次。

@PreDestory:注解的方法在destory()方法调用后得到执行。
在这里插入图片描述

5. @Primary

自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常。

6. @Lazy(true)

用于指定该Bean是否取消预初始化,用于注解类,延迟初始化。

7. @Autowired(很重要经常用也经常跟Resource说区别都是自动装配

Autowired默认先按byType,如果发现找到多个bean,则,又按照byName方式比对,如果还有多个,则报出异常。

区别来了:
​ @Autowired:默认按类型注入,相同类型的bean有多个时,需要进行处理,否则报异常。

​ @Resource:默认按名称注入,如果名称对应的bean与属性类型不匹配,报异常,如果没有找到相应名称,则按类型注入,需要进行处理,否则报异常。

8. @Resource(重要)

默认按 byName自动注入,如果找不到再按byType找bean,如果还是找不到则抛异常,无论按byName还是byType如果找到多个,则抛异常。

9. @Async

这个也是总结别人的,搬运工:
java里使用线程用3种方法:

  1. 继承Thread,重写run方法

  2. 实现Runnable,重写run方法

  3. 使用Callable和Future接口创建线程,并能得到返回值。

10.@Named

@Named和Spring的@Component功能相同。@Named可以有值,如果没有值生成的Bean名称默认和类名相同

11. @Inject

使用@Inject需要引用javax.inject.jar,它与Spring没有关系,是jsr330规范。

与@Autowired有互换性。

12. @Singleton(要有印象)

只要在类上加上这个注解,就可以实现一个单例类,不需要自己手动编写单例实现类。

13.@Valid,@Valided(要有印象)

1.@Valid必需使用在以@RequestBody接收参数的情况下。

2.使用ajax以POST方式提示数据,禁止用Fiddler以及浏览器直接访问的方式测试接口

3.用<mvc:annotation-driven />添加注解驱动。

4.@Valid是应用在javabean上的校验。
这些jar包是需要的。@Valid是使用hibernate validation的时候使用,可参数下面介绍的@RequestBody

6.@Valid下后面紧跟BindingResult result,验证结果保存在result
在入参User上添加了@Valid做校验,在User类里属性上实行实际的特定校验。

14.@RequestBody(很重要)

有个默认属性required,默认是true,当body里没内容时抛异常。

application/x-www-form-urlencoded:窗体数据被编码为名称/值对。这是标准的编码格式。这是默认的方式
multipart/form-data:窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。二进制数据传输方式,主要用于上传文件

注意:必需使用POST方式提交参数,需要使用ajax方式请求,用Fiddler去模拟post请求不能。

15.@CrossOrigin(重要)

一般这个解决不了问题自己写个跨域类吧
是Cross-Origin ResourceSharing(跨域资源共享)的简写

作用是解决跨域访问的问题,在Spring4.2以上的版本可直接使用。在类上或方法上添加该注解

16.@RequestParam(重要)

作用是提取和解析请求中的参数。@RequestParam支持类型转换,类型转换目前支持所有的基本Java类型

@RequestParam([value=”number”], [required=false]) String number

将请求中参数为number映射到方法的number上。required=false表示该参数不是必需的,请求上可带可不带。

17. @PathVariable(重要)

@PathVariable:处理requet uri部分,当使用@RequestMapping URI template 样式映射时, 即someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上

@RequestHeader,@CookieValue

@RequestHeader,@CookieValue: 处理request header部分的注解
将头部信息绑定到方法参数上:
/将cookie里JSESSIONID绑定到方法参数上:

@SessionAttributes,@ModelAttribute

@SessionAttributes,@ModelAttribute:处理attribute类型是注解。XXXX

18.@Scope

配置bean的作用域。
@Controller

@RequestMapping(“/test”)

@Scope(“prototype”)
默认是单例模式,即@Scope(“singleton”),

singleton:单例,即容器里只有一个实例对象。

prototype:多对象,每一次请求都会产生一个新的bean实例,Spring不无法对一个prototype bean的整个生命周期负责,容器在初始化、配置、装饰或者是装配完一个prototype实例后,将它交给客户端,由程序员负责销毁该对象,不管何种作用域,容器都会调用所有对象的初始化生命周期回调方法,而对prototype而言,任何配置好的析构生命周期回调方法都将不会被调用

request:对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效

19.@ResponseStatus

@ResponseStatus用于修饰一个类或者一个方法,修饰一个类的时候,一般修饰的是一个异常类,当处理器的方法被调用时,@ResponseStatus指定的code和reason会被返回给前端。value属性是http状态码,比如404,500等。reason是错误信息

20. @RestController(很重要)

一般的是restful风格get(查)put(修改)post(新增) delect(删除)
@RestController = @Controller + @ResponseBody。

是2个注解的合并效果,即指定了该controller是组件,又指定方法返回的是String或json类型数据,不会解决成jsp页面,注定不够灵活,如果一个Controller即有SpringMVC返回视图的方法,又有返回json数据的方法即使用@RestController太死板。

灵活的作法是:定义controller的时候,直接使用@Controller,如果需要返回json可以直接在方法中添加@ResponseBody

21.@ControllerAdvice(重要)

官方解释是:It is typically used todefine@ExceptionHandler,

@InitBinder, and@ModelAttribute methods that apply to all@RequestMapping methods

意思是:即把@ControllerAdvice注解内部使用@ExceptionHandler、@InitBinder、@ModelAttribute注解的方法应用到所有的 @RequestMapping注解的方法。非常简单,不过只有当使用@ExceptionHandler最有用,另外两个用处不大。

22.元注解包括 @Retention @Target @Document @Inherited四种

元注解是指注解的注解@Retention: 定义注解的保留策略:

@Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含

@Retention(RetentionPolicy.CLASS) //默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,

@Retention(RetentionPolicy.RUNTIME) //注解会在class字节码文件中存在,在运行时可以通过反射获取到

23.@RequestMapping(很重要就是接受所有请求)

处理映射请求的注解。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径
@Target:定义注解的作用目标:@Retention: 定义注解的保留策略:
1、 value, method:
value:指定请求的实际地址,指定的地址可以是URI Template 模式;
method:指定请求的method类型, GET、POST、PUT、DELETE等;
value的uri值为以下三类:
A) 可以指定为普通的具体值;如@RequestMapping(value =”/testValid”)
B) 可以指定为含有某变量的一类值;如@RequestMapping(value=”/{day}”)
C) 可以指定为含正则表达式的一类值;如@RequestMapping(value=”/{textualPart:[a-z-]+}.{numericPart:[\d]+}”) 可以匹配…/chenyuan122912请求。
2、 consumes,produces:
consumes: 指定处理请求的提交内容类型(Content-Type),例如@RequestMapping(value = ”/test”, consumes=”application/json”)处理application/json内容类型

produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
3 params、headers:
params: 指定request中必须包含某些参数值是,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。

24. @GetMapping和@PostMapping(很重要)

@GetMapping(value = “page”)等价于@RequestMapping(value = “page”, method = RequestMethod.GET)

@PostMapping(value = “page”)等价于@RequestMapping(value = “page”, method = RequestMethod.POST)

总结:这是spring都总结了这么多注解,springmvc明晚在记录吧,这有些注解我都没见到过我也该吸收吸收了,惭愧菜呀,向大佬看起
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小小刘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值