终版
- 1)@SpringBootTest: 目的是加载ApplicationContext,启动spring容器;
- 2)@RunWith:测试启动器,让Test在spring容器环境下执行,假如测试类中没有这个注解,会导致service、dao等自动注入失败。
org.junit.jupiter.api(junit-jupiter-api包)不需要该注解,只需要@SpringBootTest即可;但junit4需要,否则报错如下所示;
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency>
- 3)@Qualifier(value=“messageServiceImpl”)。当接口存在多个实现时,指定具体实现。
常用
- @Autowired
controller
@RestConstroller
// MediaType在spring-web的jar下,proceduces可以用下面几个中一个
@RequestMapping(value = "/api/v1/xxx", produces = MediaType.APPLICATION_JSON_VALUE)
@RequestMapping(value = "/api/v1/xxx", produces = "application/json;charset=UTF-8"
@RequestMapping(value = "/api/v1/xxx", produces = MediaType.APPLICATION_JSON_VALUE)
public class XxxController {
// 比如分页获取请求
@GetMapping("/xxx")
// 或者getXxx(@RequestParam(required=false, defaultValue="", value="表示接收的值,否则默认与param同名") Object param)
public Object getXxx(Object param){...}
// 插入、修改接口,简单的审核是否通过也需要;@RequestBody必需,否则无法收到参数
@PostMapping("/xxx")
public Object getXxx(@RequestBody Object param, HttpServletRequest request){request.getHeader("x-auth-uid"); ...}
// 删除操作
@DeleteMapping("/xxx/{id})
public Object getXxx(@PathVariable("id") Object param){...}
}
@Controller与@RestController区别
- @Controller。web 页面,默认,返回的是一个string ,代表展示哪个模板页面或者是要跳转到哪里去。
- @RestController。API接口,方法返回的是可以是一个对象,是一个可以被序列化的对象,像系列化为json。
涉及的注解
- @RestConstroller
- @RequestMapping
- @GetMapping、@PostMapping、@DeleteMapping
- @RequestBody、@PathVariable(“id”)(参数来自路径)、@RequestParam(参数来自于请求头)
- @ControllerAdvice与@ExceptionHandler连用:统一异常处理,对@RequestMapping、@GetMapping、@PostMapping有效(其他的未测试,不清楚了…)
idea的插件lombok
- @Getter、@Setter、@Data
- @Slf4j。直接可以用log.info()等
Swagger文档
- @ApiOperation(“controller的方法注释”)
- @ApiModel(value = “接口参数对应类的注释”)、@ApiModelProperty(value = “”, example=“例子,swagger调试时的example中出现”, allowableValues = “”)
- @ApiImplitParam(value = “接口参数注释, 通常为参数名称”, dataType=“String”, required=true, example=“”
- @ApiImplitParams({包含多个@ApiImplitParam,以,隔开})
mybatis
- @Select
// 获取由数据库自动生成的主键, keyProperty="id"指定把获取到的主键值注入到id 属性
@Insert("")
@Options(useGeneratedKeys = true, keyProperty = "id")
int insert(Major record);
java原生
- @Target:注解适用的范围,如ElementType.METHOD、FIELD等。
- @Retention可以用来修饰注解。1)RetentionPolicy.SOURCE只保留在源文件;2)RetentionPolicy.CLASS保留到source及class文件,默认;的生命周期;3)RetentionPolicy.RUNTIME,jvm中仍然存在;
自定义AOP
@Aspect。当前类标识为切面类
@Pointcut。植入Advice的触发条件。
@Around:环绕增强
@AfterReturning:后置增强,相当于AfterReturningAdvice,方法正常退出时执行
@Before:前置增强方法,相当于BeforeAdvice的功能,相似功能的还有
@AfterThrowing:异常抛出增强,相当于ThrowsAdvice
@After: final增强,不管是抛出异常或者正常退出都会执行