Spring boot常用注解


在使用Spring boot过程中使用的许多的注解,虽然经常使用,但是有些仅仅在使用的过程中在会去查询所包含的意思,现在将常用的注解进行一个记录。

@SpringBootApplication

这个注解主要是应用启动类的入口上,而且是一个组合注解,里面包含了@SpringBootConfiguration @EnableAutoConfiguration @ComponentScan
SpringBoot01.jpg

@SpringBootConfiguration

根据官网的解释 @SpringBootConfiguration继承自@Configuration,标志这是一个配置类,并将当前类内声明的一个或多个以@Bean注解标记的方法的实例注入到到srping容器中,实例名为方法名

@EnableAutoConfiguration

此注释自动载入应用程序所需的所有Bean——这依赖于Spring Boot在类路径中的查找。判断项目需要加载的模块,会自动的帮你配置web项目中所需要的默认配置。需要排除一些无需自动配置的类时,可用exclude来排除
如图
SpringBoot02.jpg

此处排除了自带的数据源

@ComponentScan

@ComponentScan 对应于XML配置形式中的 context:component-scan,会扫描当前包及其子包下被标记的类并纳入到spring的Ioc容器中进行管理;
这些特定的注解大致分为: @Controller @Entity@Component@Service @Repository
对于该注解,还可以通过 basePackages 属性来控制该注解的自动扫描范围,如:

1
@ComponentScan(basePackages = {"com.xiaoming.demo.scoket.controller","com.xiaoming.demo.scoket.entity"})

@Controller 和 @RestController

@Controller

使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面
若返回json等内容到页面,则需要加@ResponseBody注解

@RestController

@RestController
类似于@Controller@ResponseBody这两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但是返回html页面,视图解析器也无法解析html页面

@RequestMapping

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

常用注解

  1. value,method;
    value:指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);
    method:指定请求的method类型, GET、POST、PUT、DELETE等;

  2. consumes,produces;
    consumes:指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
    produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;

  3. params,headers;
    params:指定request中必须包含某些参数值是,才让该方法处理。
    headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。
    最常用的 value 和methid
    @RequestMapping(value=”/admin”, method = RequestMethod.GET)
    用get的方式访问为”/admin”

常用简化的注解是@GetMapping,@PostMapping
@GetMapping等价于 @RequestMapping(method = RequestMethod.GET)
@PostMapping 等价于 @RequestMapping(method = RequestMethod.POST)

RequestBody和@ResponseBody

@RequestBody

是作用在形参列表上,用于将前台发送过来固定格式的数据封装为对应的 JavaBean 对象,进行前后台交互。

@ResponseBody

注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,效果等同于通过response对象输出指定格式的数据

1
2
3
4
5
  @RequestMapping("/login")
  @ResponseBody
  public User login(User user){
    return user;
  }

User在前台接收到的数据为:{“loginName”:”xxx”,”name”:”xxx”}

@Component

官方的原话是:带此注解的类看为组件,当使用基于注解的配置和类路径扫描的时候,这些类就会被实例化。其他类级别的注解也可以被认定为是一种特殊类型的组件,比如@Repository @Aspect。

可以理解为:一个类上添加@Component注解后,表明这个类会作为组件类,并告知Spring要为这个类创建bean,并实例化到spring容器中,相当于配置文件中的并且@Component可以注解其他类注解。

Component与@Bean的区别

@Component(@Controller、@Service、@Repository):通过类路径扫描来自动侦测以及自动装配到Spring容器中。

@Bean:注在标有该注解的方法中定义产生这个bean的逻辑。

@ConfigurationProperties

将配置文件中的配置,以属性的形式自动注入到实体中。

@ConfigurationProperties注解需要和@Component搭配使用,主要是为了让 @ComponentScan 扫描到,只有当类所在的包被@ComponentScan 注解扫描到才会生效,默认情况下,该注解会扫描在主应用类下的所有包结构;prefix代表配置前缀,配置文件中的前缀是什么, prefix 中就使用什么。成员变量就是对应的配置文件的第二级属性名,容器会自动绑定配置文件的数据到对应的配置属性类中。
定义的属性的
注意事项:

  1. 在prefix其外部特性将被结合到类的字段定义。
  2. 根据Spring Boot的宽松绑定 规则,类的属性名称必须与外部属性的名称匹配。
  3. 我们可以通过简单地用值初始化字段来定义默认值。
  4. 类本身可以是包私有的。
  5. 类的字段必须有公共setter。
    下面是为自己在项目中的使用
    配置文件是.yml
    在配置文件中进行自定义参数的声明
    prefix02.jpg
    定义一个配置类,添加@Component和@ConfigurationProperties其中prefix填写的是自定义参数的前缀。
    prefix03.png
    类里面的成员变量为二级属性名
    在使用用过程中
    通过@Autowired进行注解使用,通过get获得到值
    prefix04.jpg

    结束

    目前互联网上很多大佬都有SpringBoot系列教程,文章中如有相同之处,请多多包涵,希望留言告诉我,我会积极的进行署名以及添加文章链接地址。若有表达不清楚或者错误之处,还望提出,谢谢!
-------------本文结束感谢您的阅读-------------