目录
一、Sping相关注解
用于启动类上的注解
用于普通控制器上面的注解
Rest风格的控制器上面的注解
用于Service上的注解
用于Mapper接口中的注解
配置相关的注解
IOC注解(控制反转,让扫描器去发现,注册Bean到IOC容器)
DI注解(依赖注入)
AOP注解(面向切面编程)
Spring事务管理注解
二、Lombok相关注解
三、MyBatis相关注解
用于启动类上的注解
用于实体类的注解
面向注解编程
@SpringBootApplication
是一个复合注解 由这三个注解复合而成
@SpringBootConfiguration 作用与 @Configuration 一样 让当前类成为一个配置类 @EnableAutoConfiguration 开启自动化配置 @ComponentScan 开启IOC容器扫描器 自动扫描与当前启动类同级或下级的所有组件类
@MapperScan("") MyBatis相关注解 配置Mapper接口所在的包路径,MyBatis基于动态代理模式 在运行时代理所有Mapper接口中方法的实现
@Controller
让当前类被扫描器发现,并注册对象到IOC容器,并且对象被当作控制器使用
@RequestMapping
映射类或方法的请求URL地址,类可以有地址也可以没有,类的url地址是当前类中所有方法url地址的前缀。给类映射url地址的时候不可以指定请求方式,给方法映射url地址的时候可以指定请求方式为get或post,如果不指定默认是get,url地址和请求方式要全局唯一
@ResponseBody
将控制器方法返回的结果直接转化为json格式,然后放到响应报文中进行返回 这样控制器方法只返回数据,不用转发到jsp,它是和ajax发起的http请求一起使用的
@RequestParam
用于修正参数名,设置参数是不是必须的
@RestController
定义一个rest风格的控制器
控制器中所有的方法都默认使用了@ResponseBody注解,只返回数据,不作转发和重定向
@GetMapping 不能映射类
@PostMapping 不能映射类
@PutMapping 不能映射类
@DeleteMapping 不能映射类
@PathVariable 用于rest风格的url地址 从url地址的占位符中取值赋给参数
@Service
让service类被IOC容器发现
@Param
当接口中的方法有多个参数的时候,需要用@Param注解修正参数名字,在Mapper.xml文件中根据@Param注解修正后的名字进行取值
@Configuration
让任意一个类成为一个配置类
@Bean
用于配置类中的方法,将方法返回的对象注册到IOC容器中
@Value("${配置名}")
用于读取application.propertis核心配置文件,根据配置名读取配置值,并把值赋给成员变量
@Controller (用于控制器)
@Service (用于Service)
@Repository(用于dao) 用不到了
@Component (用于普通组键类,例如用于AOP类)
@Configuration(用于配置类)
@Scope
用于设置Bean的作用域
@Scope(“singleton”)单例模式
在启动时就会发现和注册Bean放到IOC容器,在使用时不会创建新的Bean
@Scope(“prototype”) 原型模式
在启动时不会发现和注册Bean到IOC容器,在使用时每次都会创建新的Bean
@Resource
jdk提供的
@Autowried
框架自带的
@Aspect
定义一个AOP切面类
@Pointcut ("execution(* com.iweb.springbootshop.controller.*.*(..))")
定义一个切面表达式,根据表达式寻找被AOP代理增强的目标方法
@Before
定义一个前置代理增强的方法
@AfterReturning
定义一个返回时代理增强的方法
@AfterThrowing
定义一个抛出异常时代理增强的方法
@After
定义一个后置代理增强的方法
@Around
定义一个环绕代理增强的方法
@Transactional
1. 可以用于类也可以用于方法,如果用于类则类中所有方法都会开事务执行,用于方法是单个方法开事务执行
2.可以用于Controller类,也可以用于Service类,或者其他操作数据库的类
@Transactional(rollbackFor = Exception.class)
3.必须指定rollbackFor=某个异常类型.class,表示当执行过程中发生这种异常时进行回滚,不发生则执行提交
4.事务隔离级别默认是数据库的默认隔离级别 可以通过isolation设置 取值是枚举类型
@Transactional(rollbackFor = Exception.class,isolation=isolation.DEFAULT)
5.可以通过propagation指定事务传播机制,取值是Propagation枚举类型
@Data
用于自动在字节码中生成getter和setter toString{ } 重写toString equals hashcode方法
@Slf4j
用于在字节码中生成一个全局的静态常量log,用于打印日志
@MapperScan("")
配置Mapper接口所在的包路径,MyBatis基于动态代理模式 在运行时代理所有Mapper接口中方法的实现
@TableName 映射表名
@TableId 映射表中的主键ID
@TableFieId 映射表中的字段
如果实体类中类名和属性名完全遵守驼峰命名规范,
数据库表名和字段名完全遵守全小写+下划线连字符规范,
那么就不需要使用@TableName和@TableFieId 进行手动映射 框架会自动映射