Spring Boot项目常用注解

in TCEHJava with 0 comment

@SpringBootApplication

  此注解是个组合注解,包括了@SpringBootConfiguration、# @EnableAutoConfiguration和@ComponentScan注解。其中@ComponentScan让SpringBoot扫描到Configuration类并把它加入到程序上下文,也就是触发自动配置和组件扫描(核心:约定优先于配置)。

@SpringBootConfiguration

  继承至@Configuration,对于熟悉spring的开发者而言,此标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名。

@EnableAutoConfiguration

  这个注解就是springboot能自动进行配置的魔法所在了。主要是通过此注解,能所有符合自动配置条件的bean的定义加载到spring容器中,比如根据spring-boot-starter-web ,来判断你的项目是否需要添加了webmvc和tomcat,就会自动的帮你配置web项目中所需要的默认配置。

@ComponentScan

  这个熟悉spring的开发者也应该熟悉,会扫描当前包及其子包下被@Component,@Controller,@Service,@Repository等注解标记的类并纳入到spring容器中进行管理。

@RestController

  此注解是个组合注解,包括@Controller、@ResponseBody注解。@RestController 是Spring4之后加入的注解,原来在@Controller中返回json需要@ResponseBody来配合,如果直接用@RestController替代@Controller就不需要再配置@ResponseBody,默认返回json格式。而@Controller是用来创建处理http请求的对象,一般结合@RequestMapping使用。

@RequestMapping

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

  常用属性:

value:

  指定请求的实际地址,指定的地址可以是URI Template 模式。

method:

  指定请求的method类型, GET、POST、PUT、DELETE等。

consumes:

  指定处理请求的提交内容类型(Content-Type),例如application/json, text/html。

produces:

  指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回。

params:

  指定request中必须包含某些参数值,才让该方法处理。

headers:

  指定request中必须包含某些指定的header值,才能让该方法处理请求。

  其简化注解有

@GetMapping 等同于 @RequestMapping(method = RequestMethod.GET)
@PostMapping 等同于 @RequestMapping(method = RequestMethod.POST)
@PutMapping 等同于 @RequestMapping(method = RequestMethod.PUT)
@DeleteMapping 等同于 @RequestMapping(method = RequestMethod.DELETE)
@PatchMapping 等同于 @RequestMapping(method = RequestMethod.PATCH)

@RequestBody

  注解允许request的参数在reqeust体中,常常结合前端POST请求,以content-type="application/json"的格式,传递Json数据跟后台进行交互。

@ResponseBody

  注解支持将response的参数放在Response体中,通常返回json格式给前端。

@PathVariable

  用来接收参数,如/id/18,可接收18作为参数。可用于构建符合RESTful风格的API

    @RequestMapping("/id/{id}")
    public String index(@PathVariable int id) {
        return "/index";
    }

@RequestParam

  用来接收URL中的参数,如/id?id=18,可接收18作为参数。其中@RequestParam()可以不传入参数名,会自动使用方法形参名。

    @RequestMapping("/id")
    public String index(@RequestParam("id") int id) {
        return "/index";
    }

@RequestAttribute

  用于访问由过滤器或拦截器创建的、预先存在的请求属性,效果等同与request.getAttrbute()。

@Controller

  用于定义控制器类,在spring 项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping。

@Service

  作用于业务逻辑层。用于修饰service层的组件。

@Repository

  作用于持久层,修饰DAO或者repositories类,会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。

@Component

  最普通的组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

@Bean

  用@Bean标注方法等价于XML中配置的bean。

@Value

  注入SpringBoot application.properties配置的属性的值。

@Inject

  等价于默认的@Autowired,只是没有required属性;

@ModelAttribute

  主要是绑定请求参数到指定对象上。此注解可被用于方法、参数上。
  运用在参数上,会将客户端传递过来的参数按名称注入到指定对象中,并且会将这个对象自动加入ModelMap中,便于View层使用;
  运用在方法上,会在每一个@RequestMapping标注的方法前执行,如果有返回值,则自动将该返回值加入到ModelMap中;

@Autowired

  自动导入依赖的bean。byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。当加上(required=false)时,就算找不到bean也不报错。

@Qualifier

  当有多个同一类型(同接口不同实现)的Bean时,可用@service(“name”)的形式标注。然后用@Qualifier(“name”)与@Autowired配合使用。等同于@Resource(name="name")。

@Resource

  当@Resource注解写在字段上时,默认先使用名称进行匹配,名称可以通过@Resource的name属性指定,如上。当没有指定name属性的时候,则默认取字段名作为名称查找。当按名称找不到的时候,则按照字段的类型进行匹配。
  当@Resource注解写在setter方法上的时候,先按照setter方法中参数名进行匹配,匹配不到的话,则按照参数类型进行匹配。

Comments are closed.