@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方法中参数名进行匹配,匹配不到的话,则按照参数类型进行匹配。
本文由 Administrator 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站部分文章采集自互联网,因某些原因未注明出处,如有侵权,请留言告知。