共计 4928 个字符,预计需要花费 13 分钟才能阅读完成。
Spring Web MVC 与 Spring Bean 注解
Spring Web MVC 注解
- @RequestMapping
@RequestMapping 注解的主要用途是将 Web 申请与申请解决类中的办法进行映射。Spring MVC 和 Spring WebFlux 都通过 RquestMappingHandlerMapping 和 RequestMappingHndlerAdapter 两个类来提供对 @RequestMapping 注解的反对。
- @RequestBody
@RequestBody 在解决申请办法的参数列表中应用,它能够将申请主体中的参数绑定到一个对象中,申请主体参数是通过 HttpMessageConverter 传递的,依据申请主体中的参数名与对象的属性名进行匹配并绑定值。此外,还能够通过 @Valid 注解对申请主体中的参数进行校验。
- @PostMapping
@PostMapping 注解用于解决 HTTP POST 申请,并将申请映射到具体的解决办法中。@PostMapping 与 @GetMapping 一样,也是一个组合注解,它相当于是 @RequestMapping(method=HttpMethod.POST)的快捷方式。
- @GetMapping
@GetMapping 注解用于解决 HTTP GET 申请,并将申请映射到具体的解决办法中。具体来说,@GetMapping 是一个组合注解,它相当于是 @RequestMapping(method=RequestMethod.GET)的快捷方式。
- @DeleteMapping
@DeleteMapping 注解用于解决 HTTP DELETE 申请,并将申请映射到删除办法中。@DeleteMapping 是一个组合注解,它相当于是 @RequestMapping(method=HttpMethod.DELETE)的快捷方式。
- @PutMapping
@PutMapping 注解用于解决 HTTP PUT 申请,并将申请映射到具体的解决办法中,@PutMapping 是一个组合注解,相当于是 @RequestMapping(method=HttpMethod.PUT)的快捷方式。
- @PatchMapping
注解用于解决 HTTP PATCH 申请,并将申请映射到对应的解决办法中。@PatchMapping 相当于是 @RequestMapping(method=HttpMethod.PATCH)的快捷方式。
- @ControllerAdvice
@ControllerAdvice 是 @Component 注解的一个延长注解,Spring 会主动扫描并检测被 @ControllerAdvice 所标注的类。@ControllerAdvice 须要和 @ExceptionHandler、@InitBinder 以及 @ModelAttribute 注解搭配应用,次要是用来解决控制器所抛出的异样信息。
首先,咱们须要定义一个被 @ControllerAdvice 所标注的类,在该类中,定义一个用于解决具体异样的办法,并应用 @ExceptionHandler 注解进行标记。
此外,在有必要的时候,能够应用 @InitBinder 在类中进行全局的配置,还能够应用 @ModelAttribute 配置与视图相干的参数。应用 @ControllerAdvice 注解,就能够疾速的创立对立的,自定义的异样解决类。
- @ResponseStatus
@ResponseStatus 注解能够标注申请解决办法。应用此注解,能够指定响应所须要的 HTTP STATUS。特地地,咱们能够应用 HttpStauts 类对该注解的 value 属性进行赋值。
- @ResponseBody
@ResponseBody 会主动将控制器中办法的返回值写入到 HTTP 响应中。特地的,@ResponseBody 注解只能用在被 @Controller 注解标记的类中。如果在被 @RestController 标记的类中,则办法不须要应用 @ResponseBody 注解进行标注。@RestController 相当于是 @Controller 和 @ResponseBody 的组合注解。
- @ExceptionHandler
@ExceptionHander 注解用于标注解决特定类型异样类所抛出异样的办法。当控制器中的办法抛出异样时,Spring 会主动捕捉异样,并将捕捉的异样信息传递给被 @ExceptionHandler 标注的办法。
- @PathVariable
@PathVariable 注解是将办法中的参数绑定到申请 URI 中的模板变量上。能够通过 @RequestMapping 注解来指定 URI 的模板变量,而后应用 @PathVariable 注解将办法中的参数绑定到模板变量上。
特地地,@PathVariable 注解容许咱们应用 value 或 name 属性来给参数取一个别名。模板变量名须要应用 {} 进行包裹,如果办法的参数名与 URI 模板变量名统一,则在 @PathVariable 中就能够省略别名的定义。
- @Controller
@Controller 是 @Component 注解的一个延长,Spring 会主动扫描并配置被该注解标注的类。此注解用于标注 Spring MVC 的控制器。上面是应用此注解的示例代码:
- @RequestParam
@RequestParam 注解用于将办法的参数与 Web 申请的传递的参数进行绑定。应用 @RequestParam 能够轻松的拜访 HTTP 申请参数的值。
- @RestController
@RestController 是在 Spring 4.0 开始引入的,这是一个特定的控制器注解。此注解相当于 @Controller 和 @ResponseBody 的快捷方式。当应用此注解时,不须要再在办法上应用 @ResponseBody 注解。
- @ModelAttribute
通过此注解,能够通过模型索引名称来拜访曾经存在于控制器中的 model。
- @InitBinder
@InitBinder 注解用于标注初始化 WebDataBinider 的办法,该办法用于对 Http 申请传递的表单数据进行解决,如工夫格式化、字符串解决等。
- @CrossOrigin
@CrossOrigin 注解将为申请解决类或申请解决办法提供跨域调用反对。如果咱们将此注解标注类,那么类中的所有办法都将取得反对跨域的能力。应用此注解的益处是能够微调跨域行为。
Spring Bean 注解
- @Component
@Component 注解用于标注一个一般的组件类,它没有明确的业务范围,只是告诉 Spring 被此注解的类须要被纳入到 Spring Bean 容器中并进行治理。
- @ComponentScan
@ComponentScan 注解用于配置 Spring 须要扫描的被组件注解正文的类所在的包。能够通过配置其 basePackages 属性或者 value 属性来配置须要扫描的包门路。value 属性是 basePackages 的别名。
- @Repository
@Repository 注解也是 @Component 注解的延长,与 @Component 注解一样,被此注解标注的类会被 Spring 主动治理起来,@Repository 注解用于标注 DAO 层的数据长久化类。
- @Service
@Service 注解是 @Component 的一个延长(特例),它用于标注业务逻辑类。与 @Component 注解一样,被此注解标注的类,会主动被 Spring 所治理。
Spring Dependency Inject 与 Bean Scops 注解
- @Bean
@Bean 注解次要的作用是告知 Spring,被此注解所标注的类将须要纳入到 Bean 治理工厂中。@Bean 注解的用法很简略,在这里,着重介绍 @Bean 注解中 initMethod 和 destroyMethod 的用法。
- @DependsOn
@DependsOn 注解能够配置 Spring IoC 容器在初始化一个 Bean 之前,先初始化其余的 Bean 对象。
- @Scope
@Scope 注解能够用来定义 @Component 标注的类的作用范畴以及 @Bean 所标记的类的作用范畴。@Scope 所限定的作用范畴有:singleton、prototype、request、session、globalSession 或者其余的自定义范畴。这里以 prototype 为例子进行解说。
当一个 Spring Bean 被申明为 prototype(原型模式)时,在每次须要应用到该类的时候,Spring IoC 容器都会初始化一个新的改类的实例。在定义一个 Bean 时,能够设置 Bean 的 scope 属性为 prototype:scope=“prototype”, 也能够应用 @Scope 注解设置。
容器配置注解
- @Autowired
@Autowired 注解用于标记 Spring 将要解析和注入的依赖项。此注解能够作用在构造函数、字段和 setter 办法上。
- @Primary
当零碎中须要配置多个具备雷同类型的 bean 时,@Primary 能够定义这些 Bean 的优先级。
- @PostConstruct 与 @PreDestroy
值得注意的是,这两个注解不属于 Spring, 它们是源于 JSR-250 中的两个注解,位于 common-annotations.jar 中。@PostConstruct 注解用于标注在 Bean 被 Spring 初始化之前须要执行的办法。@PreDestroy 注解用于标注 Bean 被销毁前须要执行的办法。
- @Qualifier
当零碎中存在同一类型的多个 Bean 时,@Autowired 在进行依赖注入的时候就不晓得该抉择哪一个实现类进行注入。此时,咱们能够应用 @Qualifier 注解来微调,帮忙 @Autowired 抉择正确的依赖项。
Spring Boot 注解
- @SpringBootApplication
@SpringBootApplication 注解是一个快捷的配置注解,在被它标注的类中,能够定义一个或多个 Bean,并主动触发主动配置 Bean 和主动扫描组件。此注解相当于 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 的组合。
- @EnableAutoConfiguration
@EnableAutoConfiguration 注解用于告诉 Spring,依据以后类门路下引入的依赖包,主动配置与这些依赖包相干的配置项。
- @ConditionalOnClass 与 @ConditionalOnMissingClass
这两个注解属于类条件注解,它们依据是否存在某个类作为判断根据来决定是否要执行某些配置。
- @ConditionalOnBean 与 @ConditionalOnMissingBean
这两个注解属于对象条件注解,依据是否存在某个对象作为根据来决定是否要执行某些配置办法。
- @ConditionalOnResource
此注解用于检测当某个配置文件存在使,则触发被其标注的办法。
- @ConditionalOnProperty
@ConditionalOnProperty 注解会依据 Spring 配置文件中的配置项是否满足配置要求,从而决定是否要执行被其标注的办法。
- @ConditionalOnWebApplication 与 @ConditionalOnNotWebApplication
这两个注解用于判断以后的应用程序是否是 Web 应用程序。如果以后利用是 Web 应用程序,则应用 Spring WebApplicationContext, 并定义其会话的生命周期。
- @Conditional
@Conditional 注解能够管制更为简单的配置条件。在 Spring 内置的条件管制注解不满足利用需要的时候,能够应用此注解定义自定义的管制条件,以达到自定义的要求。
- @ConditionalExpression
此注解能够让咱们管制更细粒度的基于表达式的配置条件限度。当表达式满足某个条件或者表达式为真的时候,将会执行被此注解标注的办法。
总结
本文了列举了代码开发中 Spring Boot 最常见的注解应用形式,心愿能让大家对 Spring Boot 罕用注解有一个全面的理解,写代码效率翻几倍!
本文由 mdnice 多平台公布