@RestController --是Springmvc提供的,定义类可以被浏览器访问(类上)
@RequestMapping("car") --(多种访问方式都行)是Springmvc提供的,规定浏览器访问这个类的方式:http://localhost:8080/car
@RequestMapping(value="car" method=RequestMapping.post ) :post方式访问 http://localhost:8080/car
@SpringBootApplication --表示是一个启动类,用于启动服务器(类上)
SpringApplication.run(RunApp.class);--启动指定类
@PathVariable注解,获取@GetMapping("user/{name}/{age}/{id}")花括号中间的变量的值(@PathVariable后面不能是对象)(restful方法)
@PostMapping("")--只获取post请求,获取参数
@GetMapping("")--只获取get请求,获取参数
@DateTimeFormat(pattern = "yyyy-MM-dd") --把String类型转变为日期,格式为yyyy-MM-dd
@ResponseBody --返回对象利用jackson工具类转换为json字符串
@RequestParam --参数名和请求参数名称不同时使用,可以设置默认值。
@Component("??")(@Service,@Controller) --用来让spring完成ioc(创建一个bean):{"person" =new Person()}:?代表key
@Autowired --di,依赖注入,也可以在@Autowired("实现类名字")
@Qualifier("?"):依赖注入的实现类名字(单个实现类则没必要)
或者直接@Resource(name="defaultMenuService"),name中写实现类名字
@Aspect --表示是一个切面 切面:通知+切点
@Pointcut("execution(* cn.tedu.Service.*.*(..))")--切点表达式: *表示0或多个 *依次表示方法返回值,包名.类名.方法名(..)(..是参数列表):定义切点位置
@Before("切点")--在调用目标方法前,执行该前置通知
@After("切点")--在执行目标方法后,执行该后置通知
@Around("切点")--方法执行之前和之后都执行
@CrossOrigin --放行js的访问技术,让Ajax(axios)可以访问服务器(类上),解决跨域问题
@Value("${mysql.username}")--动态从配置文件中获取相关的值($:表示动态 {}:里面表示路径)
@PropertySource(value="classpath:/路径",encoding="UTF-8")--将指定配置文件交给spring容器管理(类上)
@Data --动态生成get/set/toString/hashcode/equals等方法(先导入lombok的jar包)
@Accessors(chain = true) --开启链式加载 重写set方法(每个set都是返回一个对象)
@NoArgsConstructor --无参构造
@AllArgsConstructor --全参构造
@BeforeEach--测试API的注解,在@Test注解的方法之前执行
@Param("sex")--(多值操作)本质上还是使用的map集合,@Param("sex")中的sex相当于key
@Alias("DemoUser")--为sql语句的xml文件的返回值类型(resultType)取别名
@RequestBody--将post请求中从浏览器接收的JSON字符串转换为对象
@RestControllerAdvice(常用)--标识该类是全局异常的处理机制,返回值都是JSON串。Advice 通知:aop中的技术,解决特点问题的。特点:该异常处理机制,只拦截Controller层的异常
@ControllerAdvice --标识该类是全局异常的处理机制,返回值是对象。特点:该异常处理机制,只拦截Controller层的异常
@ExceptionHandler({RuntimeException.class}) --当程序遇到'运行时异常'即执行该方法,可以加入其他异常。
@Transactional--默认条件下拦截运行时异常(rollbackFor = RuntimeException.class)
@SpringBootTest--只要@Test测试方法执行,则整个spring容器启动(只能在测试类中使用,测试类的包路径在主启动类的同包及子包下)
mybatisplus:
@TableName("item_cat")--定义该类关联表名
@TableId(type = IdType.AUTO) --主键自增
@TableField(exist = false) --表示当前字段不存在,属性sql不负责操作
@TableField(fill = FieldFill.INSERT_UPDATE) --插入或修改操作时自动填充内容,不需要专门赋值
@Configuration --标识这是一个配置类
@Bean作用--将方法的返回值交给spring容器管理
@LoadBalanced--:实现负载均衡,使用 @LoadBalanced注解描述RestTemplate对象时,
* 假如使用RestTemplate对象发起远程服务调用,底层会对这个请求
* 进行拦截,拦截到此请求后,会基于LoadBalancerClient对象
* 获取服务实例,然后进行负载均衡方式的调用
@EnableFeignClients--用于告诉spring框架,要对使用@FeignClients注解描述的接口创建其实现类以及对象
@FeignClient 注解描述的接口,用于定义远程调用规范
* 其中,name属性的值为远端服务名,同时也会将这个名字作为
* RemoteProviderService接口实现类的对象的Bean名字
* contextId预防还有其他接口同时调用sca-provider的情况
* fallbackFactory预防调用的服务突然不可用了或者调用过程超时的解决方法
@Slf4j -- 创建log对象
@RefreshScope ---告诉系统底层,配置中心内容发生变化,重新构建此对象
@SentinelResource 使用此注解的方法,
* 在此方法被访问时,会在sentinel的簇点链路中显示,
* 在此注解中指定的名字就是资源名,我们可以对这个资源
* 的访问,按照指定的链路进行限流设计
@Async--底层会异步执行(由spring自带的线程池中的线程去执行)
@Cacheable(value ="menuCache")--此注解描述的方法为切入点方法,此方法执行时,底层会通过AOP机制
* 先从缓存存取数据,缓存有则直接返回,缓存没有则查数据,最后将查询的数据
* 还会向redis存储一份
@CachePut(value = "menuCache",key = "#menu.id")--更新缓存