Spring注解大全

若有想一起讨论技术,共同进步的,可加微信群:
图片

辞职已经有一周了,在广州面试了好几家公司,都是三四十人规模的公司,但是发现这些公司的要求都是挺高的,至少我认为对应届生的我来说很吃力,或许还是我自己努力得不够,所以,我打算未来一周都不投简历,全力闭关修炼,并总结一些自己的所得,希望所有的应届生都不要如我一样得不到offer。
以下是我总结得一些注解,不一定全是Spring家族的。总结得不好还请指教。


@Controller

说明:定义控制器类,负责接收前端发送过来的请求。


@RestController

说明:相当于@ResponseBody 和 @Controller 的合集

属性如下:

value:


@RequestMapping

说明:是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

属性如下:

value: 指定请求的地址。

method: 指定请求的method类型 ,值为 **RequestMethod **枚举类中的值,分别是(GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE)。

consumes: 指定请求的提交内容类型(Content-Type)。

produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回。

params:  指定request中必须包含某些参数值是,才让该方法处理。

headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。


@PostMapping

说明:相当于 **@RequestMapping(method = RequestMethod.POST) **


@GetMapping

说明:相当于 **@RequestMapping(method = RequestMethod.GET) **


@PutMapping

说明:相当于 **@RequestMapping(method = RequestMethod.PUT) **


@DeleteMapping

说明:相当于 **@RequestMapping(method = RequestMethod.DELETE) **


@RequestParam

说明:在处理方法入参处使用,可以把请求参数传递给请求方法。

属性如下:

value:请求参数名 (必须配置)

name:请求参数名,等同value

required:是否必须传 true(默认)| false

defaultValue:设置参数默认值


@ModelAttribute

说明:将方法参数 或 方法返回值绑定到web view 的model 里面。只支持@RequestMapping 这类型的控制器。它既可以标注在方法入参上,也可以标注在方法(返回值上)。

属性如下:

value:

name:

binding:true(默认) | false

用途

  • 注释方法

  • 注释一个方法的参数

推荐博客https://www.jianshu.com/p/ed480f6afd3e


@SessionAttributes

说明


@PathVariable

说明:是Spring3.0 的一个新功能,主要是接收请求路径中占位符的值

属性如下:

value:参数名

name:参数名,等同value

required:是否必须传 true(默认)| false

示例

@GetMapping(value = "test/{id}/{name}")
public String test(@PathVariable(value = "id") Long id,                @PathVariable(value = "name", required = false) String name){

  return "id=" + id + ",name=" +name;
}

@RequestBody

说明: 主要用来接收前端传递给后端的json数据

属性如下:

required:是否必须传 true(默认)| false

注意:使用时,前端不能使用GET方式提交数据,而是需要POST方式发送请求数据。

示例

@ApiOperation(value = "删除会员卡", nickname = "card/delete")
@PostMapping(value = "card/delete")
public ResponseDto cardDelete(@Validated @RequestBody IdReq req) {
    cardService.delete(req.getId());
    return new ResponseDto();

}

@ResponseBody
说明:这个注解通常将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。

注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

示例

@PostMapping("/login")
@ResponseBody
public User login(User user){
  return user;
}

@RequestHeader

说明:获取请求头信息

属性如下

value:请求头名称

name:请求头名称,等同value

required:是否必须传 true(默认)| false

defaultValue:默认值

示例

@GetMapping(value = "head/hello")
public String headHello(@RequestHeader(value = "User-Agent") String browser){
  
return "Hello, " + browser;
}

@CookieValue


@Component


@Service


@Repository


@Resource

说明:此注释可以应用于应用程序组件类,也可以应用于组件类的字段或方法。将注解应用于字段或者方法时,容器将在初始化该组件时将请求的资源的实例注入应用程序组件。如果将该注解应用于组件类,则声明应用程序将在运行时查找的资源。

属性如下

name:对于字段注释,默认值是字段名。对于方法注释,默认值是与方法对应的javabeans属性名。对于类注释,没有默认值,必须指定该值。

lookup:引用指向的资源的名称。它可以使用全局jndi名称链接到任何兼容的资源。

type: 资源的Java类型。对于字段批注,默认值是字段的类型。对于方法注释,默认值是javabeans属性的类型。对于类注释,没有默认值,必须指定该值。

authenticationType:

AuthenticationType.CONTAINER(默认) | AuthenticationType.APPLICATION
用于此资源的身份验证类型。这可以为表示任何受支持类型的连接工厂的资源指定,而不能为其他类型的资源指定。

shareable:指示此资源是否可以在此组件和其他组件之间共享。这可以为表示任何受支持类型的连接工厂的资源指定,而不能为其他类型的资源指定。

mappedName:

description:

示例

@Resource
private CardService cardService;

@ApiOperation(value = "会员卡详情", nickname = "card/getDetail")
@GetMapping(value = "card/getDetail")
public ResponseDto<CardDetailRsp> cardGetDetail(@ApiParam(value = "会员卡ID") @NotNull(message = "会员卡ID不能为空") Long id) {

    return new ResponseDto<>(cardService.getDetail(id));

}

@Autowired
说明:与@Resource作用相似,根据类型注入,也可配合@Qualifier使用

属性如下

required:是否必须传 true(默认)| false


@Qualifier

说明:配合@Autowired使用,@Autowired是根据类型进行自动装配的,但是如果有两个地方注入了同个类型的Bean,则就会报错,这时我们就可以用@Qualifier注解来区分每个Bean了。


@Inject


@SpringBootApplication

说明:相当于@Configuration, @EnableAutoConfiguration和@ComponentScan的集合体。

属性如下

exclude:

excludeName:

scanBasePackages:

scanBasePackagesClasses:


@ComponentScan

说明:根据定义的扫描路径,把符合扫描规则的类装配到Spring容器中。


@Configuration

说明:被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。


@EnableAutoConfiguration

说明:开启自动装配


@InitBinder


@Value

说明:该注解的作用是将我们配置文件的属性读出来,有@Value(“${}”)和@Value(“#{}”)两种方式


@PostConstruct

说明:注释用于在依赖关系注入完成之后需要执行的方法上,以执行任何初始化。此方法必须在将类放入服务之前调用。支持依赖关系注入的所有类都必须支持此注释。即使类没有请求注入任何资源,用 PostConstruct 注释的方法也必须被调用。只有一个方法可以用此注释进行注释。应用 PostConstruct 注释的方法必须遵守以下所有标准:该方法不得有任何参数,除非是在 EJB 拦截器 (interceptor) 的情况下,根据 EJB 规范的定义,在这种情况下它将带有一个 InvocationContext 对象 ;该方法的返回类型必须为 void;该方法不得抛出已检查异常;应用 PostConstruct 的方法可以是 public、protected、package private 或 private;除了应用程序客户端之外,该方法不能是 static;该方法可以是 final;如果该方法抛出未检查异常,那么不得将类放入服务中,除非是能够处理异常并可从中恢复的 EJB。


@PreDestory


@ControllerAdvice

说明:捕获全局异常


@Retention

说明:定义被它所注解的注解保留多久,一共有三种策略,定义在RetentionPolicy枚举中.


@Target

说明:注解的作用目标


@Document

说明:注解标记的元素,Javadoc工具会将此注解标记元素的注解信息包含在javadoc中。默认,注解信息不会包含在Javadoc中。


@Bean

说明:声明Bean的作用域, 基本作用域 singleton(单例) 、 prototype(多例) ,Web 作用域(reqeust、session、globalsession),自定义作用域


@Primary


@Lazy


@Async


@Named


@NotNull


@Valid


@Singleton


@Valided


@NotBlank


@Null


@AssertTrue


@AssertFalse



@Size


@Length


@Past


@Future



@Pattern


@Min


@Max


@DecimalMax


@DecimalMin


@Digits


@Range


@Range


@CreditCardNumber


@Email


@ScriptAssert


@URL


@CrossOrigin


@ResponseStatus


@Inherited


@JsonBackReference


@RepositoryRestResourcepublic


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值