若有想一起讨论技术,共同进步的,可加微信群:
辞职已经有一周了,在广州面试了好几家公司,都是三四十人规模的公司,但是发现这些公司的要求都是挺高的,至少我认为对应届生的我来说很吃力,或许还是我自己努力得不够,所以,我打算未来一周都不投简历,全力闭关修炼,并总结一些自己的所得,希望所有的应届生都不要如我一样得不到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),自定义作用域