注解
测试类
@Test 测试类中的方法用他修饰才能成为测试方法,才能启动执行
@BeforeEach
修饰实例方法,会在每一个测试方法执行之前执行一次
@AfterEach
修饰实例方法,会在每一个测试方法执行之后执行一次
@BeforeAll
修饰静态方法,会在每一个测试方法执行之前只执行一次
@AfterAll
修饰静态方法,会在每一个测试方法执行之后只执行一次
@ParameterizedTest
参数化测试的注解(单个测试多次执行,仅参数不同)
@ValueSource
参数化测试的参数来源,赋予测试方法参数
@DisplayName
指定测试类测试方法显示的名称(默认类名、方法名)
SpringBootWeb -三层架构
运行测试
@SpringBootApplication(启动类/引导类)-负责组件扫描
== 其集成了
·@ComponentScan (组件扫描)
@ComponentScan注解是用来进行组件扫描的,扫描启动类所在的包及其子包下所有被@Component及其衍生注解声明的类。
·@Import (导入)导入的类会被Spring加载到IOC容器中
@Enable****
·Enable开头的注解中会指定那些要导入的bean对象或配置类
@SpringBootConfiguration (标识当前的类是一个配置类)
@SpringBootConfiguration注解上使用了@Configuration,表明SpringBoot启动类就是一个配置类。
@Indexed注解,是用来加速应用启动的(不用关心)。
- @EnableAutoConfiguration
- 封装了@Import注解(Import注解中指定了一个ImportSelector接口的实现类)
@Conditional (按一定条件判断,满足条件的bean对象才会被注册到Spring的IOC容器中)
其本身是一个父注解,派生了很多子注解
·ConditionalOnClass(判断环境中有对应的字节码文件,才注册到IOC容器中)
·ConditionalOnMaissingBean(判断环境中有没有对应的bean)
·ConditionalOnProperty(判断配置文件中有对应的属性和值)
三层架构
解耦思想
(控制反转:IOC)
(依赖注入:DI)
(bean对象:IO容器中创建管理的对象)
@Component 声明bean的基础注解
· @Respository -标注在数据访问层类上(与mybatis整合)
@Autowired 按照类型自动装配(去IOC容器中找某个类型的对象,然后完成注入操作)
@Primary (存在多个相同类型的Bean时,默认实现)
@Qualifier(指定当前指定要注入的bean对象,不能单独使用必须配合@Autowired使用)
@Resource(按照bean的名称注入)
控制层(Controller)
@RestController (标识当前类是一个请求处理类)
@ResponseBody(@RestController的底层由它和@Controller组成)
将方法返回值直接响应給浏览器,如果返回值是实体对象/集合,会将其转换为Json格式后响应给浏览器
@GetMapping 查询
@PostMapping 新增
@PutMapping 修改
@DeleteMapping 删除
@RequestMapping (标识请求路径)
@RequestBody 接收前端传过来的对象
@RequestParam(defaultValue="默认值")//设置请求参数默认值
@PathVariable 获取路径参数(路径名与形参名相同,value可以忽略)
业务逻辑层(Service)
@Service
== 处理从Dao层调用的数据 ==
@Transactional 开启事务
@Transactional(rollbackFor = Exception.class)开启事务,可以指定参数
数据访问层(Dao)
@Mapper
== 操作文件中的数据 ==
数据的增删改查
@Select 查询
@Delete 删除
@Insert 增加
@UpDate 修改
@Options(useGeneratedKeys=true,KeyProperty="id")
主键返回,主要用于在两张表上保存信息
@Mapkey("指定返回主键的形参名")
前后端不一致,手动映射结果
@Results({@Result(column = "create_time",property="createTime"),
@Result(column = "update_time",property = "updateTime")})
实体类
== 用于接收前后端数据 ==
!!! 命名时前后端尽量保持一致 !!!
@Data
重写get/set方法,HashCode/Equals方法
@NoArgsConstructor (无参构造器)
@AllArgsConstructor (有参构造器)
日志
@Slf4j 日志注解
全局异常处理器
@RestConlerAdvice (标识目前类为全局异常处理器)
@ExceptionHandler (指定可以捕获那种类型的异常进行处理)
过滤器(Filter)·拦截器(Interceptor)
过滤器(Filter)
@ServletComponentScan(开启对Servlrt组件支持)加在启动类上
@WebFilter(urlPatterns ="/*")
配置过滤器的请求路径,/*表示拦截所有
拦截器(Interceptor)
@Configuration(标识声明一个配置类)
AOP(面向切面编程)
@Aspect (标识:当前类为切面)
@Around (环绕通知)
标注的通知方法在目标方法前后都执行
@Before (前置通知)
标注的通知方法在目标方法前执行
@After(后置通知)
标注的方法在目标方法后执行,无论是否有异常都执行
@AfterReturning (返回后通知)
标注的通知在目标方法后执行,有异常不会执行
@AfterThrowing (异常后通知)
标注的通知在异常发生后执行
@PointCut(将公共的切入点表达式抽取出来)
@Oder ==(切面的执行顺序)
@annotation(自定义注解)
在需要记录日志的方法上添加(自己定义的注解)就可以记录日志了
Bean的管理
singleton(单例)
@Scope("prototype") bean的作用域为非单例
每一次使用该bean的时候都会创建一个新的实例
@Bean
用来声明第三方依赖中的类
- 默认singleton的bean,在容器启动时被创建,可以使用@Lazy注解来延迟初始化(延迟到第一次使用时)
测试类
@SpringBootTest是 Spring Boot 提供的一个测试注解,主要用于集成测试