1.SpringBoot 核心注解 @ SpringBootApplication
包含三个注解:@Configuration、@EnableAutoConfiguration、@ComponentScan
2. SpringBoot 测试类注解 @SpringBootTest
3.@Mapper 用于标注数据访问组件 即用在 Mapper/Dao 接口层 它是mybatis的注解,Mapper不需要配置扫描地址,通过xml里面的namespace里面的接口地址,生成了Bean后注入到Service层中。
@Repository 用于标注数据访问组件 即用在 Mapper/Dao 接口层 它是spring的注解,需要在Spring中配置扫描地址,然后生成Dao层的Bean才能被注入到Service层中。
4. @Service 用于标注业务层
5. @RestController 用于标注控制层组件,包含@Controller和@ResponseBody。
6. @RequestMapping:用来处理请求地址映射的注解 @RequestMapping("/query")
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
该注解有六个属性:
params:指定request中必须包含某些参数值是,才让该方法处理。
headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。
value:指定请求的实际地址,指定的地址可以是URI Template 模式
method:指定请求的method类型, GET、POST、PUT、DELETE等
consumes:指定处理请求的提交内容类型(Content-Type),如application/json,text/html;
produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回
7.@AutoWired:
默认使用byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。
当加上(required=false)时,就算找不到bean也不报错。
8. @Resource
默认使用byName注入方式,@Resource有两个属性比较重要,分别是name和type,
Spring将 @Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型,如果使用name属性,则使用byName的自动注入策略,而使用type属性时,则使用byType自动注入策略,如果既不指定name也不知道type属性,这将通过反射机制使用byName自动注入策略
@Resource装配顺序
1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;
9.@PathVariable:
路径变量。参数与大括号里的名字一样要相同。
RequestMapping("user/get/mac/{macAddress}")
public String getByMacAddress(@PathVariable String macAddress){
//do something;
}
10. @Autowired与@Resource 的区别
1. @Autowired与@Resource都可以用来装配bean,都可以用在字段上,或者卸载setter方法上。
2. @Autowired默认按类型装配(这个注解属于spring的),默认情况下必须要求依赖对象必须存在,如果允许空值,可以设置它的required属性为false,如:@Autowired(required = false),如果想使用名称装填可以结合使用@Qualifier注解进行使用,如下:
@Autowired()@Qualifier("baseDao")
private BaseDao baseDao;
3. @Resource(这个注解属于J2ee的),默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行配置装配。当取不到与名称匹配的bean时才按照类型进行装配,需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。
@Resource(name="baseDao")
private BaseDao baseDao;
推荐使用: @Resouce注解在字段上,这样就不用写setter方法了,并且这个注解属于j2ee的,减少与spring的耦合,这样代码看起来就比较优雅。