一:辅助性注解
在spring boot 框架下@Autowired,@Override
作用都是被框架管理自动生成对象
@Autowired 注解。这个注解的功能就是为我们注入一个定义好的 bean。
首先,我们从所属范围来看,事实上这个注解是属于 Spring 的容器配置的一个注解,与它同属容器配置的注解还有:@Required,@Primary, @Qualifier 等等。因此 @Autowired 注解是一个用于容器 ( container ) 配置的注解。
应用最多:将 @Autowired 注解添加到需要该类型数组的字段或方法,则 Spring 会从 ApplicationContext 中搜寻符合指定类型的所有 bean,
@Autowired 注解应用于构造函数; 注解应用于 setter 方法 注解应用于具有任意名称和多个参数的方法;应用于字段,或者将其与构造函数混合
@Override 也可以用来注入bean 主要功能是进行一个检测判断
加了此注解的方法,表示此方法是一个覆写的方法,如果不满足覆写会报错。
在日常的编程中,一般出现在ServiceImpl实现类的方法上。java在进行接口实现的时候,要实现接口中定义的所有方法,也就是通过实现类重写方法。加上此注解,会帮助我们检测方法重写的正确性,例如:方法名是否与接口中一致(也就是是否可以在接口中找到次方法定义),方法的引用参数是否正确等等
@Service()
此注注解属于业务逻辑层,service或者manager层
默认按照名称进行装配,如果名称可以通过name属性指定,如果没有name属性,注解写在字段上时,默认去字段名进行查找,如果注解写在setter方法上,默认按照方法属性名称进行装配。当找不到匹配的bean时,才按照类型进行装配,如果name名称一旦指定就会按照名称进行装配
RestController = @Controller + @ResponseBody组成,
- @Controller 将当前修饰的类注入SpringBoot IOC容器,使得从该类所在的项目跑起来的过程中,这个类就被实例化。当然也有语义化的作用,即代表该类是充当Controller的作用
- @ResponseBody 它的作用简短截说就是指该类中所有的API接口返回的数据,甭管你对应的方法返回Map或是其他Object,它会以Json字符串的形式返回给客户端
@ApiVersion
是用来声明当前的版本号 可以和服务器地址等一些配置进行关联 方便进行线上访问
二:启动类注解
@SpringBootApplication
标注这个类是属于SpringBoot的启动类,从源代码中可以获悉,这个注解被@Configuration、@EnableAutoConfiguration、@ComponentScan 注解所修饰,换言之 Springboot 提供了统一的注解来替代以上三个注解。
@MapperScan
上面的那个注解是用来标注扫描dao范围的,这里如果你使用的MyBatis的话,需要通过配置文件来指定Mapper和主要的配置文件的位置, mybaitsplus 不需要这个注解
三:传参类注解
@ PathVariable 主要作用:映射URL绑定的占位符 带占位符的URL是 Spring3.0 新增的功能,URL中的 {xxx} 占位符可以通过 @ PathVariable ("xxx") 绑定到操作方法的入参中
@PathVariable与@RequestParam的区别
- 相同点
A. 作用位置相同:都是直接修饰方法参数变量;
B. 功能相似:都是将URL中的变量值映射到方法参数上;
C. 都具有value属性:将URL变量名与方法参数名映射起来;
2) 不同点
A. 对应的URL不同
@PathVariable对应的URL是REST风格,具有占位符{XXX},即URL模板;如/{id}/{name}
@RequestParam对应的URL是传统URL,key=value形式,如?id=1&name=zhaohong
B. 设置默认值
@RequestParam可以通过defaultValue属性设置默认值,而@PathVariable不可以。
C. 是否必需
@RequestParam可以通过required属性设置是否必需,默认为true;而@PathVariable一定是必需的
@RequestParam
A) 常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String--> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;
B)用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST;
C) 该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;
@RequestBody
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交.
在后端的同一个接收方法里,@RequestBody 与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。
注:一个请求,只有一个RequestBody;一个请求,可以有多个RequestParam
注:当同时使用@RequestParam()和@RequestBody时,@RequestParam()指定的参数可以是普通元素、数组、集合、对象等等(即:当,@RequestBody 与@RequestParam()可以同时使用时,原SpringMVC接收参数的机制不变,只不过RequestBody 接收的是请求体里面的数据;而RequestParam接收的是key-value里面的参数,所以它会被切面进行处理从而可以用普通元素、数组、集合、对象等接收)。
即:如果参数时放在请求体中,传入后台的话,那么后台要用@RequestBody才能接收到;如果不是放在请求体中的话,那么后台接收前台传过来的参数时,要用@RequestParam()来接收,或则形参前什么也不写也能接收。