一. SpringMVC
-
@Controller
实际上是@Component,作为组件注册到ioc容器
-
ResponseBody
返回值将和response的body绑定,即页面会直接显示返回的内容
-
@RestController
相当于@Controller+@ResponseBody的组合注解
-
@RequestBody
用于获取请求body里的内容
-
@RequestMapping
用于定于访问路径。默认请求方式是GET
/**
* value: uri地址
* method: 指定请求的method类型, GET、POST、PUT、DELETE等
* consumes: 指定Content-Type
* produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
* params: 指定request中必须包含某些参数值是,才让该方法处理。
* headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
**/
@RequestMapping(value="/test", method = RequestMethod.GET)
-
@RequestParam
从请求URL中读取请求参数。默认是必须参数
/**
* value: 入参的请求参数名字
* required: 是否必须,默认是true
* defaultValue: 默认值
**/
public String queryUserName((@RequestParam(value = "name", required = false, defaultValue = "honey") String name))
-
@PathVariable
获取URI中Path变量定义为花括号{}的内容
@RequestMapping(value = "/products/{id}", method = RequestMethod.PUT)
@PathVariable("id") String id
-
@GetMapping("/{id}"),@PostMapping("/{id}"),@PutMapping("/{id}"),@DeleteMapping("/{id}")
相当于指定了method参数的@RequestMapping
二. Mybatis
-
@Mapper
说明该接口的实现类由mybatis创建,并将生成后的对象注册到ioc容器中
-
@MapperScan
自动扫描某个包下的所有接口,相当于包下的所有接口都加上了@Mapper注解
-
@Param
对应sql中#{}
占位符中的变量名称,常在不同类型时指定
TDeposit queryByGuinoAndBoxid(@Param("guino")String guino, @Param("boxid")Integer boxid);
-
@Alias
在pojo类中使用,为其起一个别名,配合@Resource使用
@Service,@Controller等注解集成了@Alias注解,直接通过value属性设置即可
@Alias("author")
public class Author {
...
}
@Service(value = "heheh")
-
@Insert @Delete @Select @Update
对应增删查改语句
三、Spring
-
@Autowrie
@Autowrie(require=false)
自动装配bean,默认不允许值为null(即require=true),可以在属性上或者Set方法上使用
先通过bytype的方式查找,再通过byname的方式查找
-
@Resource (这个注解是javax的)
自动装配bean
先通过byname的方式查找,再通过bytype的方式查找
-
@Qualifier(value="xxx")
指定唯一的Bean注入(通过别名寻找),配合@Autowire使用
-
@Nullable
字段可以为null
-
@Component、@Repository、@Service、@Controller
注册Bean并装配到Spring容器中,通过类路径扫描来自动侦测,等价于<bean id="xx" class="xxx"/>
一般@Component在pojo中使用、@Repository在Dao中使用、@Service在Service中使用、@Controller在Controller中使用
本质上都是@Component
-
@Value("xxx)
注入值、等价于<property name="xxx" value="xxx"/>
-
@Scope(value = "xxx")
配置bean的作用域,默认是单例的,可放在属性上或set方法上
-
@Configuration
使一个Java类成为配置类,等价于<beans> ...... </beans>
-
@ComponentScan("包名")
根据指定的配置自动扫描package
默认扫描规则是扫描被@Component, @Repository, @Service, @Controller或者已经声明过@Component自定义注解标记的组件
-
@Import(配置类的class)
将对应类注册到ioc容器中
一般用于将包扫描路径外的类注册到ios容器中
-
@Bean
注册Bean并装配到Spring容器中,通常是在标有该注解的方法中定义产生这个bean的逻辑(即return对象
)。,等价于<Bean id="方法名" class="返回值"/>
-
@Aspect
标注这个类是一个切面
@Before("execution(* com.xxx.(..))")
@After("execution( com.xxx.*(..))")
四. Lombok
-
@Data
包含@ToString、@EqualsAndHashCode、@Getter、@Setter的功能
-
@ToString
自动生成toSring()方法
-
@Getter、@Setter
自动生成get、set方法
-
@NONNULL
自动加上if (members == null) throw new java.lang.NullPointerException("members");
-
@Synchronized
自动给方法加同步锁
synchronized ($lock) { ... }
-
@Slf4j
简化日志的定义
五. 异常处理
-
@ControllerAdvice
全局处理异常
-
@ExceptionHandler
@ExceptionHandler(value = ProductNotfoundException.class)
@ControllerAdvice
public class ProductExceptionController {
@ExceptionHandler(value = ProductNotfoundException.class)
public ResponseEntity<Object> exception(ProductNotfoundException exception) {
return new ResponseEntity<>("Product not found", HttpStatus.NOT_FOUND);
}
}