注解缘起
从开始接触java时起,就被Spring这个名词所环绕;当时天真的认为难道这个工作和“春天”有关?一晃现在已经工作快8年了,四季变换,这个“春天”原来是我一直未放下的痛...
注解功效
你可以把他理解为学习语文时用到的“修饰符”:通过不同的修饰符可以解释不同的语句。让开发变得更加简洁!
注解名单
由于之前工作中对注解没有仔细的研究过,因此本文会在实际开发过程中进行随时补充,慢慢将之前丢弃的知识进行补漏。
Spring boot 特有注解
前提: Spring boot 抛弃XML配置文件,可以自动扫描包路径装载并注入对象,并能做到根据 classpath 下的 jar 包自动配置。
1) @Configuration:
通过该注解名字的翻译就可以很直观的理解就是之前Spring框架中的配置文件的意思。此注解为Spring 3.0时代产物,用来替代applicationContext.xml配置文件。
2)@EnableAutoConfiguration:
Spring boot自动配置的注解,通过此注解Spring boot能够根据当前类路径下的包或者类来配置 Spring Bean。
3)@ComponentScan:
自动扫描指定包下的全部标有@Component的类,并注册成bean,当然包括@Component下的子注解@Service,@Repository,@Controller。用来替代配置文件中的 component-scan 配置。
4)@SpringBootApplication:
Spring boot最核心的注解!!!用于标记Spring boot应用,作用于主类上,用于启动框架各项功能。该注解其实为上述三个注解合体。
Spring MVC常用注解
1) @Controller:
作用于类上,标识该类为控制器。在Spring MVC整体运作流程中controller负责处理DispactherServlet分发的请求。通常该注解会结合@RequestMapping同时使用,@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。
例如:
@Controller
public class TestController() {...}
2)@RequestMapping:
建立请求URL和处理方法之间的对应关系。通常作用于方法上,也可作用于类上。
当作用于类上时: 第一级访问目录;
当作用于方法上时: 第二级访问目录;
注解涉及的属性:
path-指定请求路径的URL
value属性和path属性是一样的
mthod 指定该方法的请求方式
params 指定限制请求参数的条件
headers 发送的请求中必须包含的请求头
例如:
@Controller
@RequestMapping("/api/test")
public class testController(){...}
3)@Autowired:
注入属性,通过此注解可省去set和get方法。此注入方法使用的是“byType”方式(也就是面试中常问的:通过类型注入);
例如;
public class testController() {
@Autowired
private TestService service;
}
4) @RequestBody:
该注解用于将请求的参数放在request中请求体中,而不是拼接在请求地址后面;在日常开发过程中常用于在方法中接收实体传参;
例如:
public class testController() {
@Autowired
private TestService service;
public void testAdd(@RequestBody AddVo vo) {'...}
}
5) @Resource
该注解同@Autowird注解一致,用于依赖注入。但同Autowird注解不一样的是,该注解使用的是"byName"(通过名称注入)。
例如:
public class testController() {
@Autowired
private TestService service;
@Resource
private TestMapper mapper;
public void testAdd(@RequestBody AddVo vo) {'...}
}
6) @PathVariable:
用于获取请求URL中的占位符值并用于方法中,该注解为Spring MVC向REST发展的一个标志性注解,
例如:
@GetMapping("/{id}")
public TestVo getTestVoById(@PathVariable("id") String id) {...}
上述样例代码中:该注解将@GetMappinig请求URL中的id值获取,用作方法参数。
7) @RequestParam:
该注解用于方法中,获取请求参数。
例如:
public void delTest(@RequestParam("id") String id){...}
8) @ResponseBody:
该注解用于类上,将Controller中的方法返回值封装到response中的body中。
例如:
@RequestMapping("/login")
@ResponseBody
public User login(User user){
return user;
}
Swagger常用注解
1) @API
作用在类上,表明是swagger资源,@API拥有两个属性:value、tags;
生成的api文档会根据tags分类,直白的说就是这个controller中的所有接口生成的接口文档都会在tags这个list下;
tags如果有多个值,会生成多个list,每个list都显示所有接口;
例如: @Api(tags="列表1"); @Api(tags={"列表1","列表2"});
@Api(tags="注解测试说明",valu额= "test-controller")
public class TestContoller(){...}
2)@ApiOperation
作用于在方法上,表示一个http请求的操作;主要用于描述接口。
例如:@ApiOperation(value = "获取问题概要列表(条件分页)")
@RestController
@Api(tags="注解测试说明",valu额= "test-controller")
public class TestContoller(){
@ApiOperation(value="查询测试列表")
public TestVo getTest(){...}
}
3) @ApiParam
使用在方法上或者参数上,字段说明;表示对参数的添加元数据(说明或是否必填等);
name–参数名
value–参数说明
required–是否必填
4) @ApiModel()
使用在类上,表示对类进行说明,用于参数用实体类接收;
value–表示对象名
description–描述
5) @ApiModelProperty()
使用在方法,字段上,表示对model属性的说明或者数据操作更改;
value–字段说明
name–重写属性名字
dataType–重写属性类型
required–是否必填
example–举例说明
hidden–隐藏
lombok常用注解
1) @Data
该注解通常用在实体bean上,不需要写出set和get方法,但是具备实体bean所具备的方法,简化编程提高变成速度;
@Data相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集;
例如:
@Data
@ApiModel(value = "问题列表对象,对应前端")
public class IssuesListVo {...}
Mybatis常用注解
1) @Select
该注解作用为:快速,简便的执行sql语句。
例如:
传统进行表查询操作,需要在Mapper.xml文件中进行编写sql语句然后程序进行执行;
SELECT NAME FROM STUDENT;
通过该注解可以直接在Mapper.java文件中进行编写;
@Select("SELECT NAME FROM STUDENT")
void queryStudent();
同时可以通过传参形式将需要执行的sql语句进行配置;
@Select({"${sql}"})
void queryStudent(@Param("sql") String sql);
2) @ResultType
该注解作用为:定义方法返回类型,同Mapper.xml文件中的resultType一样,可以返回基础类型、对象类型、List、Map;
例如:
查询Student表信息使用实体接收,之前在Mapper.xml中进行编写时需要:
<select id="getStudent" resultType="com.student.entity.Student">
使用该注解可以为如下:
@Select("select * from Student")
@ResultType(Student.class)
void queryStudent();