1.IOC和DI相关
1.1.@Component等
名称 | @Component/@Controller/@Service/@Repository |
---|
类型 | 类注解 |
位置 | 类定义上方 |
作用 | 设置该类为spring管理的bean |
属性 | value(默认):定义bean的id |
1.2.@Configuration
名称 | @Configuration |
---|
类型 | 类注解 |
位置 | 类定义上方 |
作用 | 设置该类为spring配置类 |
属性 | value(默认):定义bean的id |
1.3.@ComponentScan
名称 | @ComponentScan |
---|
类型 | 类注解 |
位置 | 类定义上方 |
作用 | 设置spring配置类扫描路径,用于加载使用注解格式定义的bean |
属性 | value(默认):扫描路径,此路径可以逐层向下扫描 excludeFilters:排除扫描路径中加载的bean,需要指定类别(type)和具体项(classes) includeFilters:加载指定的bean,需要指定类别(type)和具体项(classes) |
1.4.@Scope
名称 | @Scope |
---|
类型 | 类注解 |
位置 | 类定义上方 |
作用 | 设置该类创建对象的作用范围 可用于设置创建出的bean是否为单例对象 |
属性 | value(默认):定义bean作用范围, 默认值singleton(单例),可选值prototype(非单例) |
1.5.@PostConstruct
名称 | @PostConstruct |
---|
类型 | 方法注解 |
位置 | 方法上 |
作用 | 设置该方法为初始化方法 |
属性 | 无 |
1.6.@PreDestroy
名称 | @PreDestroy |
---|
类型 | 方法注解 |
位置 | 方法上 |
作用 | 设置该方法为销毁方法 |
属性 | 无 |
1.7.@Autowired
名称 | @Autowired |
---|
类型 | 属性注解 或 方法注解(了解) 或 方法形参注解(了解) |
位置 | 属性定义上方 或 标准set方法上方 或 类set方法上方 或 方法形参前面 |
作用 | 为引用类型属性设置值 |
属性 | required:true/false,定义该属性是否允许为null |
@Autowired作用范围:构造器,方法,参数,成员变量,注释
属性:required,默认是true,表示启动装配
默认情况是spring按照类型装配的,也就是byType,主要针对相同类型对象只有一个的情况,如果有多个时,就要去掉@Service等等。
1.8.@Qualifier和@Primary
名称 | @Qualifier |
---|
类型 | 属性注解 或 方法注解(了解) |
位置 | 属性定义上方 或 标准set方法上方 或 类set方法上方 |
作用 | 为引用类型属性指定注入的beanId |
属性 | value(默认):设置注入的beanId |
同一个类型有多个bean时,可以按名称装配:byName
@Service
public class UserService{
@Autowired
@Qualifier("user1")
private IUser user;
}
也可以在User1类上面在加上@Primary
1.9.@Value
名称 | @Value |
---|
类型 | 属性注解 或 方法注解(了解) |
位置 | 属性定义上方 或 标准set方法上方 或 类set方法上方 |
作用 | 为 基本数据类型 或 字符串类型 属性设置值 |
属性 | value(默认):要注入的属性值 |
@Value通常用于外部配置的属性注入,具体用法为:@Value(“${配置文件中的key}”)
注意application.properties中不要有空格和引号等过于字符
1.10.@PropertySource
名称 | @PropertySource |
---|
类型 | 类注解 |
位置 | 类定义上方 |
作用 | 加载properties文件中的属性值 |
属性 | value(默认):设置加载的properties文件对应的文件名或文件名组成的数组 |
1.11.@Bean
名称 | @Bean |
---|
类型 | 方法注解 |
位置 | 方法定义上方 |
作用 | 设置该方法的返回值作为spring管理的bean |
属性 | value(默认):定义bean的id |
1.12.@Import
名称 | @Import |
---|
类型 | 类注解 |
位置 | 类定义上方 |
作用 | 导入配置类 |
属性 | value(默认):定义导入的配置类类名, 当配置类有多个时使用数组格式一次性导入多个配置类 |
1.13.@RunWith
名称 | @RunWith |
---|
类型 | 测试类注解 |
位置 | 测试类定义上方 |
作用 | 设置JUnit运行器 |
属性 | value(默认):运行所使用的运行期 |
1.14.@ContextConfiguration
名称 | @ContextConfiguration |
---|
类型 | 测试类注解 |
位置 | 测试类定义上方 |
作用 | 设置JUnit加载的Spring核心配置 |
属性 | classes:核心配置类,可以使用数组的格式设定加载多个配置类 locations:配置文件,可以使用数组的格式设定加载多个配置文件名称 |
2.AOP相关
2.1.@EnableAspectJAutoProxy
名称 | @EnableAspectJAutoProxy |
---|
类型 | 配置类注解 |
位置 | 配置类定义上方 |
作用 | 开启注解格式AOP功能 |
2.2.@Aspect
名称 | @Aspect |
---|
类型 | 类注解 |
位置 | 切面类定义上方 |
作用 | 设置当前类为AOP切面类 |
2.3.@Pointcut
名称 | @Pointcut |
---|
类型 | 方法注解 |
位置 | 切入点方法定义上方 |
作用 | 设置切入点方法 |
属性 | value(默认):切入点表达式 |
2.4.@Before
名称 | @Before |
---|
类型 | 方法注解 |
位置 | 通知方法定义上方 |
作用 | 设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点方法前运行 |
2.5.@After
名称 | @After |
---|
类型 | 方法注解 |
位置 | 通知方法定义上方 |
作用 | 设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点方法后运行 |
2.6.@AfterReturning
名称 | @AfterReturning |
---|
类型 | 方法注解 |
位置 | 通知方法定义上方 |
作用 | 设置当前通知方法与切入点之间绑定关系,当前通知方法在原始切入点方法正常执行完毕后执行 |
2.7.@AfterThrowing
名称 | @AfterThrowing |
---|
类型 | 方法注解 |
位置 | 通知方法定义上方 |
作用 | 设置当前通知方法与切入点之间绑定关系,当前通知方法在原始切入点方法运行抛出异常后执行 |
2.8.@Around
名称 | @Around |
---|
类型 | 方法注解 |
位置 | 通知方法定义上方 |
作用 | 设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点方法前后运行 |
3.事务相关注解
3.1.@EnableTransactionManagement
名称 | @EnableTransactionManagement |
---|
类型 | 配置类注解 |
位置 | 配置类定义上方 |
作用 | 设置当前Spring环境中开启注解式事务支持 |
3.2.@Transactional
名称 | @Transactional |
---|
类型 | 接口注解 类注解 方法注解 |
位置 | 业务层接口上方 业务层实现类上方 业务方法上方 |
作用 | 为当前业务层方法添加事务(如果设置在类或接口上方则类或接口中所有方法均添加事务) |
4.SpringMVC相关注解
4.1.@Controller
名称 | @Controller |
---|
类型 | 类注解 |
位置 | SpringMVC控制器类定义上方 |
作用 | 设定SpringMVC的核心控制器bean |
4.2.@RequestMapping
名称 | @RequestMapping |
---|
类型 | 类注解或方法注解 |
位置 | SpringMVC控制器类或方法定义上方 |
作用 | 设置当前控制器方法请求访问路径 |
相关属性 | value(默认),请求访问路径 |
将请求和处理请求的控制器方法关联起来,建立映射关系。
可以用于标识类克请求方法。
属性:value={“/“,”/"}设置路径
method=RequestMethod.POST设置请求方式
param:表示必须携带该参数
!param:表示不能携带该参数
param=value:必须携带且param=value
param!=value:必须携带且param!=value
4.3.@ResponseBody
名称 | @ResponseBody |
---|
类型 | 类注解或方法注解 |
位置 | SpringMVC控制器类或方法定义上方 |
作用 | 设置当前控制器方法响应内容为当前返回值,无需解析 |
4.4.@RequestParam
名称 | @RequestParam |
---|
类型 | 形参注解 |
位置 | SpringMVC控制器方法形参定义前面 |
作用 | 绑定请求参数与处理器方法形参间的关系 |
相关参数 | required:是否为必传参数 defaultValue:参数默认值 value:对应的key值(对于表单项名称和形参名不一致,可使用该属性) |
4.5.@RequestBody
名称 | @RequestBody |
---|
类型 | 形参注解 |
位置 | SpringMVC控制器方法形参定义前面 |
作用 | 将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次 |
注意:RequsetBody最多只能有一个,而@RequestParam()可以有多个
4.6.@RequestBody与@RequestParam区别
-
区别
- @RequestParam用于接收url地址传参,表单传参【application/x-www-form-urlencoded】
- @RequestBody用于接收json数据【application/json】
-
应用
- 后期开发中,发送json格式数据为主,@RequestBody应用较广
- 如果发送非json格式数据,选用@RequestParam接收请求参数
4.7.@EnableWebMvc
名称 | @EnableWebMvc |
---|
类型 | 配置类注解 |
位置 | SpringMVC配置类定义上方 |
作用 | 开启SpringMVC多项辅助功能,例如格式转换,json数据类型自动转换等等 |
4.8.@DateTimeFormat
名称 | @DateTimeFormat |
---|
类型 | 形参注解 |
位置 | SpringMVC控制器方法形参前面 |
作用 | 设定日期时间型数据格式 |
相关属性 | pattern:指定日期时间格式字符串 |
4.9.@ResponseBody
名称 | @ResponseBody |
---|
类型 | 方法\类注解 |
位置 | SpringMVC控制器方法定义上方和控制类上 |
作用 | 设置当前控制器返回值作为响应体, 写在类上,该类的所有方法都有该注解功能 |
相关属性 | pattern:指定日期时间格式字符串 |
4.10.@PathVariable
名称 | @PathVariable |
---|
类型 | 形参注解 |
位置 | SpringMVC控制器方法形参定义前面 |
作用 | 绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应 |
相关属性 | value/name:可指定占位符 { } 中的参数名,若只指定value这一个属性可省略属性名不写,若占位符中的参数名和处理方法中的参数名相同可省略此属性。 required:是否必需,默认为 true,即 请求中必须包含该参数,如果没有包含,将会抛出异常(可选配置) |
@RequestMapping(value="/user/{name}")
public String username(@PathVariable(value="name") String username) {
return username;
}
关于接收参数,我们学过三个注解@RequestBody
、@RequestParam
、@PathVariable
,这三个注解之间的区别和应用分别是什么?
- 区别
- @RequestParam用于接收url地址传参或表单传参
- @RequestBody用于接收json数据
- @PathVariable用于接收路径参数,使用{参数名称}描述路径参数
- 应用
- 后期开发中,发送请求参数超过1个时,以json格式为主,@RequestBody应用较广
- 如果发送非json格式数据,选用@RequestParam接收请求参数
- 采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id值
4.11.@RestController
名称 | @RestController |
---|
类型 | 类注解 |
位置 | 基于SpringMVC的RESTful开发控制器类定义上方 |
作用 | 设置当前控制器类为RESTful风格, 等同于@Controller与@ResponseBody两个注解组合功能 |
4.12.@GetMapping @PostMapping @PutMapping @DeleteMapping
名称 | @GetMapping @PostMapping @PutMapping @DeleteMapping |
---|
类型 | 方法注解 |
位置 | 基于SpringMVC的RESTful开发控制器方法定义上方 |
作用 | 设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作, 例如@GetMapping对应GET请求 |
相关属性 | value(默认):请求访问路径 |
如果要发送put和delete的请求,需要通过spring提供的过滤器HiddenHttpMethodFilter
4.13.@RestControllerAdvice
名称 | @RestControllerAdvice |
---|
类型 | 类注解 |
位置 | Rest风格开发的控制器增强类定义上方 |
作用 | 为Rest风格开发的控制器类做增强 |
**说明:**此注解自带@ResponseBody注解与@Component注解,具备对应的功能
4.14.@ExceptionHandler
名称 | @ExceptionHandler |
---|
类型 | 方法注解 |
位置 | 专用于异常处理的控制器方法上方 |
作用 | 设置指定异常的处理方案,功能等同于控制器方法, 出现异常后终止原始控制器执行,并转入当前方法执行 |
**说明:**此类方法可以根据处理的异常不同,制作多个方法分别处理对应的异常
5.MyBatisPlus相关注解
5.1.@TableField
名称 | @TableField |
---|
类型 | 属性注解 |
位置 | 模型类属性定义上方 |
作用 | 设置当前属性对应的数据库表中的字段关系 |
相关属性 | value(默认):设置数据库表字段名称 exist:设置属性在数据库表字段中是否存在,默认为true,此属性不能与value合并使用 select:设置属性是否参与查询,此属性与select()映射配置不冲突 |
5.2.@TableName
名称 | @TableName |
---|
类型 | 类注解 |
位置 | 模型类定义上方 |
作用 | 设置当前类对应于数据库表关系 |
相关属性 | value(默认):设置数据库表名称 |
5.3.@TableId
名称 | @TableId |
---|
类型 | 属性注解 |
位置 | 模型类中用于表示主键的属性定义上方 |
作用 | 设置当前类中主键属性的生成策略 |
相关属性 | value(默认):设置数据库表主键名称 type:设置主键属性的生成策略,值查照IdType的枚举值 |
5.4.@TableLogic
名称 | @TableLogic |
---|
类型 | 属性注解 |
位置 | 模型类中用于表示删除字段的属性定义上方 |
作用 | 标识该字段为进行逻辑删除的字段 |
相关属性 | value:逻辑未删除值 delval:逻辑删除值 |
5.5.@Version
在MyBatis Plus中,@Version注解用于实现乐观锁功能。乐观锁是一种并发控制机制,用于处理多个用户同时对同一数据进行操作的情况。它通过在数据表中添加一个版本号字段,每次更新数据时将版本号加一,并在更新时检查版本号是否一致,以确保在并发操作中不会出现数据冲突。
@Version注解可以用于实体类的一个字段上,表示该字段是乐观锁的版本号字段。当使用MyBatis Plus进行更新操作时,会自动根据版本号字段的值进行乐观锁检查。如果版本号一致,更新操作会成功并将版本号加一;如果版本号不一致,更新操作会失败,表示数据已经被其他用户修改过了。
使用@Version注解可以简化乐观锁的实现,避免手动编写额外的代码进行版本号的控制和检查。
暂未归类注解
@Slf4j日志输出
log.info();
@RequsetHeader
(@RequestHeader(“Authorization”) String authorization)
获取请求头信息
@SpringBootApplication
它组合了多个其他的注解,这些注解可以启动应用程序、配置属性、扫描组件和处理自动配置。这样,使用@SpringBootApplication注解可以更加方便地在Spring Boot应用程序中定义主类。
@CrossOrigin跨域问题
@CrossOrigin(“http://localhost:7070”),这里的7070是点断服务器端口