- 阿里:十年进两家;应届生校招简单一些,但是社招难(名牌大学)
- spring5.2.9 —-> gradle5.2.6
- 区分spring Bean:
- 普通对象:我们自定义需要的对象
- 容器对象:内置对象,spring需要的对象
- 区分初始化和实例化
disposable
disposable
英 [dɪˈspəʊzəbl] 美 [dɪˈspoʊzəbl]
adj.
可任意处理的;一次性的;用后即丢弃的;可动用的;可自由支配的
n.
〈美口〉使用后随即抛掉的东西(尤指容器等)
System.getEnv()和System.getProperties()—-> 这是在所有程序中都有的属性与环境,只不过在spring框架中将其封装成了Environment
- Map结构自动注入属性、设置值的方法—->Environment
- Environment当完成整个程序的加载之后会运行很多系统的属性值添加到当前对象中去,后续需要的时候就直接从当前对象中直接获取了
- 学源码主要是为了避免在工作中出bug的情况下必须得看源码的时候,不学的话一知半解只能猜一猜碰巧改对,而学过的话就能为所欲为
- 封装公司框架—->做二次开发
- 国际化设置—->initMessageSource—->i18n—->小项目用不到
- wave波浪—->weave织入
- do×××方法是实际干活的方法—->关键实现,好好看一下
- 单例会给你解决循环依赖问题,prototype的时候会直接抛异常不解决—->为什么prototype的时候不解决循环依赖?
- 因为每次在创建之前都要new一个新的,而且无法把创建好的对象提前暴露出去,解决不了循环依赖
- 连老师—->基础班lambda表达式与函数式接口
- 反射好吗?
- 反射的效率不是低吗,为什么框架要用反射
- 反射的灵活性高
- 虽然性能低,但是也是在运行了足够的次数之后才能体现出性能低,用一次或者个别次数性能差异是看不出来的(不会差特别多)
- 执行100,000次之后才会看出反射的差异性!!!(不确定)
- 不用反射只能用new了,但是new的耦合性太高了—->需要写死,不能用xml中的字符串来创建
- 一定用反射
- factorybean的一个缓存
- debug的时候按住f7点击可以进入到某一个方法中去
- 解决循环依赖—->提前暴露:暴露的是只完成了实例化而没有完成初始化的操作!!!默认值为空的那些对象暴露出去,后续再补充对应的值
- 构造器的循环依赖无法解决
- set的循环依赖可以解决
- 实例化和初始化的过程是分开的
- 三级缓存中放的是匿名内部类lambda表达式
- 为什么要用三级缓存才能解决循环依赖?
- AOP是在BeanPostProcessor中实现的,当对象需要被代理的时候就需要三级缓存来实现了
- 看源码的时候看到了after的操作一定有相应的before操作,不然有点困惑