1、核心基础
1(常规),2(部分内部原理),3(专业训练)
1(spring.xml) 2(注解)
1、核心注解
注解 | 作用 | 备注 |
---|---|---|
@Bean | 容器中注册组件 | |
@Primary | 同类组件如果有多个,标注主组件 | |
@DependsOn | 组件之间声明依赖关系 | |
@Lazy | 组件懒加载(最后使用的时候才创建) | |
@Scope | 声明组件的作用范围(SCOPE_PROTOTYPE,SCOPE_SINGLETON,) | |
@Primary | 同类组件如果有多个,标注主组件 | |
@Configuration | 声明这是一个配置类,替换以前(beans.xml) | 理解proxyBeanMethods |
@Controller | ||
@Service | ||
@Repository | ||
@Component | ||
@Indexed | 加速注解,所有标注了@Indexed的组件,直接会启动快速加载 | |
@Order | 数字越小优先级越高,越先工作 | |
@ComponentScan | 包扫描 | |
@ComponentScans | 包扫描 | |
@Conditional | 条件注入 1,2 @ConditionalOnMissingBean | 自定义 |
@Import | 导入第三方jar包中的组件 | |
@ImportResource | 导入以前的xml配置文件,让其生效 | |
@Profile | 基于多环境激活 | |
@PropertySource | 外部properties配置文件和JavaBean进行绑定.结合ConfigurationProperties | |
@PropertySources | ||
@Autowired | 自动装配 | |
@Qualifier | 精确指定 | |
@Value | 取值、计算机环境变量、JVM系统。xxxx | SpringBoot支持各种外部化配置 |
2、核心接口
Spring在干嘛?
容器—装所有的组件----组件的功能扩展(容器在启动期间要做好的)
接口:(高度扩展,不满意底层,自己写一个实现类,直接替换)
充电:(type-c)
多态、继承、封装
设计模式
方法论:
分析Spring源码;
-
1、变量名、类名、方法名 - 见名知意;(简单)
-
2、遵循相关的设计模式(难)
-
3、遵循规范(JSR)(难)
-
4、以后实现了某个接口,这个类后缀就用接口名。
1、生命周期
-
InitializingBean:初始化组件; 组件创建完对象,赋值好以后调用一次
-
DisposableBean:销毁组件; ioc.close()会被调用。
-
BeanPostProcessor:Bean的后置处理器;后置增强器:在组件创建对象以后对组件增强
- Spring的大核心
- postProcessBeforeInitialization:初始化之前 进行 功能增强(组件创建完对象,并且set方法默认调用完成后执行)
- postProcessAfterInitialization:初始化之后 进行 功能增强(属性设置完,回调完成afterPropertiesSet(系统里面所有的赋值都完成了))
- AutowiredAnnotationBeanPostProcessor(Autowired注解的后置处理器)
- @Autowired是怎么给组件中进行自动装配就利用AutowiredAnnotationBeanPostProcessor
- 后置处理器(Bean增强器)。几乎很多功能都是他增强的。
- AOP的一部分也是后置处理器;
- 后置处理器可以使用@Ordered接口规定谁先运行。
-
BeanFactoryPostProcessor:BeanFactory的后置器:Bean工厂的后置处理器
AOP咋实现的?
- @EnableAspectJAutoProxy 会给容器中导入 AnnotationAwareAspectJAutoProxyCreator
- AnnotationAwareAspectJAutoProxyCreator就是一个 BeanPostProcessor
- AnnotationAwareAspectJAutoProxyCreator就能创建目标对象的代理对象,最终实现AOP
2、核心
- BeanFactory:Bean工厂。工厂帮我们制造了所有的组件。
- FactoryBean:工厂Bean。
- BeanDefinition:Bean定义
- BeanDefinitionRegistry:bean定义的注册中心
- BeanDefinitionReader:Bean定义的读取器
- Aware(BeanFactory):感知。
- xxxAware。容器中的组件需要一些感兴趣的信息(一般不是我们自己的组件,而是系统组件)
- 利用回调,把系统组件赋值给我们,我们进行接收使用
- Enviroment:环境