第一阶段 SpringBoot、JPA、Redis
第一章 Java编程思想深度理论知识
重点理论单纯interface可以统一方法调用,但是它不能统一对象实例化。
面向对象主要做两件事情:实例化对象和调用方法(完成业务逻辑)。
只有一段代码中没有new的出现,才能保持代码相对稳定,才能逐步实现OCP,实质是一段代码如果要保持稳定,就不应该负责对象的实例化。
对象的实例化是不可能消除的。
把对象实例化的过程,转移到其他代码片段。
代码中总是会存在不稳定,隔离这些不稳定,保证其他代码是稳定的。
变化造成了不稳定。
IOC、DI、DIP理论DIP(依赖倒置)高层模块不应该依赖低层模块,两者都应该依赖抽象
抽象不应该依赖细节
细节应该依赖抽象
总结一句话:面向抽象编程
DI(依赖注入)意义:松耦合,消除组件之间的直接依赖关系
实现原理:通过容器将对象注入进来。容器的作用就是装配对象,实现基本原理是工厂模式+反射。
IOC(控制反转)控制权的反转
PS积木生产厂家(程序员)
设计一个一个积木(类)
玩家/用户搭建一个一个形状
代码体现
程序员生产一个一个类,至于类如何使用,不再由程序员决定。
第二章 Spring与SpringBoot理论篇
2.1 模式注解
模式注解的目的为了实例化对象或者bean加入到IOC容器最基础的模式注解@Component
@Component的延申注解@Controller、@Service、@Repository,这三个注解与@Component的作用没多大区别,只是有语义的区分。
2.2 延迟实例化与注入时机SpringBoot默认机制会在SpringBoot应用启动时立即实例化并将实例注入到代码片段里。
可以通过@Lazy注解延迟实例化时机。可以通过无参构造函数测试@Lazy延迟实例化时机是否有效。
如果只在一方@Lazy,并没有在依赖注入一方加入@Lazy,那么延迟实例化时机没有效,原因是需要注入实例,需要立即实例化。
2.3 注入
注入方式成员变量注入
Setter方法注入
构造函数注入构造函数注入可以不用加@Autowried注解
注入分类被动注入类型byType:按照类型进行注入
byName:按照类名进行注入规则:类名UserService,变量名userService
优先级 先byType再ByName
规则不存在一个bean,直接报错
只存在一个bean,直接注入
存在多个bean,也有可能不报错。如果通过ByType之后,存在多个相同类型的bean,那么会按照byName注入。
如果以上的结果最后匹配失败,那么会报错
主动注入@Qualifier注解指定实例注入,相当于byName
2.4 应对变化的两种方案策略模式:制定一个接口,让多个类实现同一个接口解决方案:byName方式
@Qualifier指定bean名
有选择的只将一个bean加入到IOC容器
@Primary提高优先注入优先级
属性配置:修改类的属性应对变化为什么要把变化隔离到配置文件?配置文件具有集中性
清晰,没有业务逻辑
2.5 @Configuration配置原理
作用替换Bean在xml的配置方式
意义更加灵活地将一个实例加入到IOC容器
可以导入一组bean到IOC容器
2.6 条件注解
作用满足条件才会将一个bean加入到IOC容器
基本用法@Conditional + 实现Conditional接口@Conditional 注解要求传入一个元类型,而且这个类必须要实现Conditional接口。
Conditional接口提供了一个可以覆写的方法matches,这个方法要求返回boolean类型,如果true,则将bean加入到IOC容器;如果false,反之。
成品条件注解@ConditionOnProperty等@ConditionOnProperty 注解是需要跟配置文件搭配使用
其中有几个比较重要的参数
value 配置文件key名
havingValue 配置文件对应key的value
matchIfMissing 默认值false,如果为true,配置文件中没有对应key,则会加入到IOC容器@ConditionalOnBean:当SpringIoc容器内存在指定Bean的条件@ConditionalOnClass:当SpringIoc容器内存在指定Class的条件@ConditionalOnExpression:基于SpEL表达式作为判断条件@ConditionalOnJava:基于JVM版本作为判断条件@ConditionalOnJndi:在JNDI存在时查找指定的位置@ConditionalOnMissingBean:当SpringIoc容器内不存在指定Bean的条件@ConditionalOnMissingClass:当SpringIoc容器内不存在指定Class的条件@ConditionalOnNotWebApplication:当前项目不是Web项目的条件@ConditionalOnProperty:指定的属性是否有指定的值@ConditionalOnResource:类路径是否有指定的值@ConditionalOnSingleCandidate:当指定Bean在SpringIoc容器内只有一个,或者虽然有多个但是指定首选的Bean@ConditionalOnWebApplication:当前项目是Web项目的条件
2.7 自动装配原理
第二阶段 VUE
第一章 VUE的思想、WEB前端发展与Vue3.0新特性
1.1 vue3.0变化综述
vue3.0的一个很大的变动从options api -> composition api。options api 类似于小程序这种方式的api,vue2.x也是这种
const vm = new Vue(el,template)
composition api 更加函数式
1.2 vue的一些必备基础最基本三件套HTML+CSS+JAVASCRIPT
ES6
有小程序基础更好,如果没学习过小程序,推荐先学习小程序
1.3 前端发展四个阶段原生JS -> DOM
JQuery
vue/react/NG
工程化
1.5 服务端渲染VS前端渲染
一个页面三个要素:html+css+数据
服务端渲染:html+数据是在服务端结合,它最终返回的是一个html。技术栈:WEB框架+模板引擎
前端渲染:它仅仅返回一个模板html(css+js),通常来说是没有数据,数据是通过js请求api获取数据,最后才填充到html上。技术栈:Vue/React/NG
如何理解前端/后端?
可以理解为两个应用程序之间的通信。前端也是一个应用程序,服务端也是一个应用程序。服务端(B) - 前端(F)
应用场景:CMS/APP/H5,