Spring Web MVC 与 Spring Bean 注解

Spring Web MVC 注解

  1. @RequestMapping

@RequestMapping注解的主要用途是将Web申请与申请解决类中的办法进行映射。Spring MVC和Spring WebFlux都通过RquestMappingHandlerMapping和RequestMappingHndlerAdapter两个类来提供对@RequestMapping注解的反对。

  1. @RequestBody

@RequestBody在解决申请办法的参数列表中应用,它能够将申请主体中的参数绑定到一个对象中,申请主体参数是通过HttpMessageConverter传递的,依据申请主体中的参数名与对象的属性名进行匹配并绑定值。此外,还能够通过@Valid注解对申请主体中的参数进行校验。

  1. @PostMapping

@PostMapping注解用于解决HTTP POST申请,并将申请映射到具体的解决办法中。@PostMapping与@GetMapping一样,也是一个组合注解,它相当于是@RequestMapping(method=HttpMethod.POST)的快捷方式。

  1. @GetMapping

@GetMapping注解用于解决HTTP GET申请,并将申请映射到具体的解决办法中。具体来说,@GetMapping是一个组合注解,它相当于是@RequestMapping(method=RequestMethod.GET)的快捷方式。

  1. @DeleteMapping

@DeleteMapping注解用于解决HTTP DELETE申请,并将申请映射到删除办法中。@DeleteMapping是一个组合注解,它相当于是@RequestMapping(method=HttpMethod.DELETE)的快捷方式。

  1. @PutMapping

@PutMapping注解用于解决HTTP PUT申请,并将申请映射到具体的解决办法中,@PutMapping是一个组合注解,相当于是@RequestMapping(method=HttpMethod.PUT)的快捷方式。

  1. @PatchMapping

注解用于解决HTTP PATCH申请,并将申请映射到对应的解决办法中。@PatchMapping相当于是@RequestMapping(method=HttpMethod.PATCH)的快捷方式。

  1. @ControllerAdvice

@ControllerAdvice是@Component注解的一个延长注解,Spring会主动扫描并检测被@ControllerAdvice所标注的类。@ControllerAdvice须要和@ExceptionHandler、@InitBinder以及@ModelAttribute注解搭配应用,次要是用来解决控制器所抛出的异样信息。

首先,咱们须要定义一个被@ControllerAdvice所标注的类,在该类中,定义一个用于解决具体异样的办法,并应用@ExceptionHandler注解进行标记。

此外,在有必要的时候,能够应用@InitBinder在类中进行全局的配置,还能够应用@ModelAttribute配置与视图相干的参数。应用@ControllerAdvice注解,就能够疾速的创立对立的,自定义的异样解决类。

  1. @ResponseStatus

@ResponseStatus注解能够标注申请解决办法。应用此注解,能够指定响应所须要的HTTP STATUS。特地地,咱们能够应用HttpStauts类对该注解的value属性进行赋值。

  1. @ResponseBody

@ResponseBody会主动将控制器中办法的返回值写入到HTTP响应中。特地的,@ResponseBody注解只能用在被@Controller注解标记的类中。如果在被@RestController标记的类中,则办法不须要应用@ResponseBody注解进行标注。@RestController相当于是@Controller和@ResponseBody的组合注解。

  1. @ExceptionHandler

@ExceptionHander注解用于标注解决特定类型异样类所抛出异样的办法。当控制器中的办法抛出异样时,Spring会主动捕捉异样,并将捕捉的异样信息传递给被@ExceptionHandler标注的办法。

  1. @PathVariable

@PathVariable注解是将办法中的参数绑定到申请URI中的模板变量上。能够通过@RequestMapping注解来指定URI的模板变量,而后应用@PathVariable注解将办法中的参数绑定到模板变量上。

特地地,@PathVariable注解容许咱们应用value或name属性来给参数取一个别名。模板变量名须要应用{ }进行包裹,如果办法的参数名与URI模板变量名统一,则在@PathVariable中就能够省略别名的定义。

  1. @Controller

@Controller是@Component注解的一个延长,Spring 会主动扫描并配置被该注解标注的类。此注解用于标注Spring MVC的控制器。上面是应用此注解的示例代码:

  1. @RequestParam

@RequestParam注解用于将办法的参数与Web申请的传递的参数进行绑定。应用@RequestParam能够轻松的拜访HTTP申请参数的值。

  1. @RestController

@RestController是在Spring 4.0开始引入的,这是一个特定的控制器注解。此注解相当于@Controller和@ResponseBody的快捷方式。当应用此注解时,不须要再在办法上应用@ResponseBody注解。

  1. @ModelAttribute

通过此注解,能够通过模型索引名称来拜访曾经存在于控制器中的model。

  1. @InitBinder

@InitBinder注解用于标注初始化WebDataBinider 的办法,该办法用于对Http申请传递的表单数据进行解决,如工夫格式化、字符串解决等。

  1. @CrossOrigin

@CrossOrigin注解将为申请解决类或申请解决办法提供跨域调用反对。如果咱们将此注解标注类,那么类中的所有办法都将取得反对跨域的能力。应用此注解的益处是能够微调跨域行为。

Spring Bean 注解

  1. @Component

@Component注解用于标注一个一般的组件类,它没有明确的业务范围,只是告诉Spring被此注解的类须要被纳入到Spring Bean容器中并进行治理。

  1. @ComponentScan

@ComponentScan注解用于配置Spring须要扫描的被组件注解正文的类所在的包。能够通过配置其basePackages属性或者value属性来配置须要扫描的包门路。value属性是basePackages的别名。

  1. @Repository

@Repository注解也是@Component注解的延长,与@Component注解一样,被此注解标注的类会被Spring主动治理起来,@Repository注解用于标注DAO层的数据长久化类。

  1. @Service

@Service注解是@Component的一个延长(特例),它用于标注业务逻辑类。与@Component注解一样,被此注解标注的类,会主动被Spring所治理。

Spring Dependency Inject 与 Bean Scops注解

  1. @Bean

@Bean注解次要的作用是告知Spring,被此注解所标注的类将须要纳入到Bean治理工厂中。@Bean注解的用法很简略,在这里,着重介绍@Bean注解中initMethod和destroyMethod的用法。

  1. @DependsOn

@DependsOn注解能够配置Spring IoC容器在初始化一个Bean之前,先初始化其余的Bean对象。

  1. @Scope

@Scope注解能够用来定义@Component标注的类的作用范畴以及@Bean所标记的类的作用范畴。@Scope所限定的作用范畴有:singleton、prototype、request、session、globalSession或者其余的自定义范畴。这里以prototype为例子进行解说。

当一个Spring Bean被申明为prototype(原型模式)时,在每次须要应用到该类的时候,Spring IoC容器都会初始化一个新的改类的实例。在定义一个Bean时,能够设置Bean的scope属性为prototype:scope=“prototype”,也能够应用@Scope注解设置。

容器配置注解

  1. @Autowired

@Autowired注解用于标记Spring将要解析和注入的依赖项。此注解能够作用在构造函数、字段和setter办法上。

  1. @Primary

当零碎中须要配置多个具备雷同类型的bean时,@Primary能够定义这些Bean的优先级。

  1. @PostConstruct与@PreDestroy

值得注意的是,这两个注解不属于Spring,它们是源于JSR-250中的两个注解,位于common-annotations.jar中。@PostConstruct注解用于标注在Bean被Spring初始化之前须要执行的办法。@PreDestroy注解用于标注Bean被销毁前须要执行的办法。

  1. @Qualifier

当零碎中存在同一类型的多个Bean时,@Autowired在进行依赖注入的时候就不晓得该抉择哪一个实现类进行注入。此时,咱们能够应用@Qualifier注解来微调,帮忙@Autowired抉择正确的依赖项。

Spring Boot注解

  1. @SpringBootApplication

@SpringBootApplication注解是一个快捷的配置注解,在被它标注的类中,能够定义一个或多个Bean,并主动触发主动配置Bean和主动扫描组件。此注解相当于@Configuration、@EnableAutoConfiguration和@ComponentScan的组合。

  1. @EnableAutoConfiguration

@EnableAutoConfiguration注解用于告诉Spring,依据以后类门路下引入的依赖包,主动配置与这些依赖包相干的配置项。

  1. @ConditionalOnClass与@ConditionalOnMissingClass

这两个注解属于类条件注解,它们依据是否存在某个类作为判断根据来决定是否要执行某些配置。

  1. @ConditionalOnBean与@ConditionalOnMissingBean

这两个注解属于对象条件注解,依据是否存在某个对象作为根据来决定是否要执行某些配置办法。

  1. @ConditionalOnResource

此注解用于检测当某个配置文件存在使,则触发被其标注的办法。

  1. @ConditionalOnProperty

@ConditionalOnProperty注解会依据Spring配置文件中的配置项是否满足配置要求,从而决定是否要执行被其标注的办法。

  1. @ConditionalOnWebApplication与@ConditionalOnNotWebApplication

这两个注解用于判断以后的应用程序是否是Web应用程序。如果以后利用是Web应用程序,则应用Spring WebApplicationContext,并定义其会话的生命周期。

  1. @Conditional

@Conditional注解能够管制更为简单的配置条件。在Spring内置的条件管制注解不满足利用需要的时候,能够应用此注解定义自定义的管制条件,以达到自定义的要求。

  1. @ConditionalExpression

此注解能够让咱们管制更细粒度的基于表达式的配置条件限度。当表达式满足某个条件或者表达式为真的时候,将会执行被此注解标注的办法。

总结

本文了列举了代码开发中Spring Boot最常见的注解应用形式,心愿能让大家对Spring Boot罕用注解有一个全面的理解,写代码效率翻几倍!

本文由mdnice多平台公布