SprinBoot中常用注解

SpringBoot中的常用注解

@Configuration 注解表示这是一个配置类

@ComponentScan(basePackages = "org.javaboy"
, useDefaultFilters = true
, excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Controller.class)})
public class SpringConfig {
}

@ComponentScan 注解表示配置包扫描,里面的属性和 xml 配置中的属性都是一一对应的,useDefaultFilters 表示使用默认的过滤器,然后又除去 Controller 注解,即在 Spring 容器中扫描除了 Controller 之外的其他所有 Bean

@RestController 是 @Controller 和 @Requestbody的组合注解(表示Controller 中的类返回值都为 json 数据)

@EnableAutoConfiguration 注解表示开启自动化配置

@Component 注解将普通的 pojo 实例化到 Spring 容器中,相当于 xml 文件中的 bean
泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

@PropertySource(“classpath:book.properties”) 注解(引入配置文件)获取 properties 文件中的内容

@ConfigurationProperties(prefix = “book”) 注解,类型安全的属性注入,配置了属性的前缀,此时会自动将 Spring 容器中对应的数据注入到对应的属性中,就不通过 @Value 注解 挨个注入了,减少工作量并且避免出错

@Conditional Starter 的核心,条件注解

@EnableConfigurationProperties 注解是使我们之前配置的 @ConfigurationProperties 生效,让该配置的属性成功的进入 Bean 中

@ConditionalOnClass(HelloService.class) 表示当项目当前 classpath 下存在 HelloService 时,才会开启自动化配置

@AutoConfigureAfter({ WebMvcAutoConfiguration.class })在某某类加载之后

@Autowired 根据类型注入

@Resource 根据属性注入

@ConditionalOnWebApplication 表示该类在 web 环境下才会生效

@ControllerAdvice
1、全局异常处理
2、全局数据绑定
3、全局数据预处理
@InitBinder(“b”) 注解表示该方法用来处理和Book和相关的参数,在方法中,给参数添加一个 b 前缀,即请求参数要有b前缀.

@ModelAttribute
绑定请求参数到命令对象:放在功能处理方法的入参上时,用于将多个请求参数绑定到一个命令对象,从而简化绑定流程,而且自动暴露为模型数据用于视图页面展示时使用。其实@ModelAttribute此处对于供视图页面展示来说与model.addAttribute(“attributeName”, abc);功能类似。

public String test(@ModelAttribute("user") UserModel user) 

@EnableScheduling加在SpringBoot 的启动类上,表示开启定时任务

@Order设置定时任务的间隔时间

@EnableSwagger2表示启用 swagger2 服务

  1. @Api注解可以用来标记当前Controller的功能。
  2. @ApiOperation注解用来标记一个方法的作用。
  3. @ApiImplicitParam注解用来描述一个参数,可以配置参数的中文含义,也可以给参数设置默认值,这样在接口测试的时候可以避免手动输入。
  4. 如果有多个参数,则需要使用多个@ApiImplicitParam注解来描述,多个@ApiImplicitParam注解需要放在一个@ApiImplicitParams注解中。
  5. 需要注意的是,@ApiImplicitParam注解中虽然可以指定参数是必填的,但是却不能代替@RequestParam(required = true),前者的必填只是在Swagger2框架内必填,抛弃了Swagger2,这个限制就没用了,所以假如开发者需要指定一个参数必填,@RequestParam(required = true)注解还是不能省略。
  6. 如果参数是一个对象(例如上文的更新接口),对于参数的描述也可以放在实体类中。例如下面一段代码:
@ApiModel
public class User {
    @ApiModelProperty(value = "用户id")
    private Integer id;
    @ApiModelProperty(value = "用户名")
    private String username;
    @ApiModelProperty(value = "用户地址")
    private String address;
    //getter/setter
}

@RequestMapping(请求映射)用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。(窄化请求)

待续。。。

你可能感兴趣的:(Spring,Boot)