# spring_study **Repository Path**: liiy250/spring_study ## Basic Information - **Project Name**: spring_study - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-13 - **Last Updated**: 2025-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## springboot学习笔记 1 定义接口直接使用注解的方式 @ResponseBody 注解定义返回内容。 2 热重启 ```xml org.springframework.boot spring-boot-devtools runtime true ``` 勾选,设置-》编译器-》自动构建项目 不生效则直接start.spring.io中重建 ResponseBody Controller RestController @RequestMapping("/v1/banner") 前缀 重点理论: 1. 单纯 interface 可以统一方法的调用,但是它不能统一对象的实例化 2. 面向对象主要做两件事情:实例化对象调用方法 (完成业务逻辑 3. 只有一段代码中没有 new 的出现,才能保持代码的相对稳定,才能逐步实现 0CP(开闭原则) 4. 上面的这句话只是表象,实质是一段代码如果要保持稳定,就不应该负责对象 的实例化 5. 对象实例化是不可能消除的 6. 把对象实例化的过程,转移到其他的代码片段里 7. 代码中总是会存在不稳定,隔离这些不稳定,保证其他的代码是稳定的。 8. 变化造成了不稳定 ## 注解 @Component 基础的注解 组件/类/bean 类的实例化 @Service @Controller @Repository @Configuration @Autowired bytype 默认的注入方式 byname @Autowired(required=false) @Qualifier("") //主动指定注入的bean 参数接收一个名字 @Lazy //延迟实例化 ## 面向对象 @ComponentScan ## 策略模式的变化方案 1. byname 切换bean name 2. @Qualifier 指定bean 3. 有选择的只注入一个bean注释掉某个bean上的@Component注解 4. 使用 @Primary ## 条件注解 @Conditional() ## 内置成品条件注解 @ConditionalOnProperty(value="hero.condition", havingValue = "diana", matchIfMissing = true) matchIfMissing 默认值 @ConditionalOnBean(name="mysql") 容器中存在bean @ConditionalOnMissingBean(name="mysql") 容器中不存在bean 写三方库给别人用的时候。 ## 自动装配 暂时不学 原生框架的增强 异常反馈 CheckException 必须要处理的异常 RuntimeException 不一定非得强制处理 异常可以处理 bug 无能为力 的异常 ## 已知异常 未知异常 自定义异常处理 自定义路由根据目录进行匹配 接收参数 @PathVariable @RequestParam lombok @Getter @Setter @AllArgsConstructor @NoArgsConstructor @RequiredArgsConstructor @NotNull ## JSR java -jar xxx.jar --spring.profiles.cative=dev @Validated @Max @Range https://github.com/TaleLin