一:给容器注册组件(依赖注入): 1.包扫描(@ComponentScan()+组件标注注解(@Controller/@Service/@Repository/@Component) 2.@Bean(导入第三方包) 3.@Import(快速给容器注入注解): 3.1:类名.class 3.2:ImportSelector(返回导入组件的全类名数组) 3.3:ImportBeanDefinitionRegistrar(手动注册bean到容器中) 4.使用Bean提供的FactoryBean 4.1:默认获取的是FactoryBean<T> 里面的T 4.2要获取Factory只用在前面加上&符号就行 二:给这些组件进行赋值操作(控制反转) 1.@Autowired()&&@@Qualifier() 按照类型 @Autowired()可以在属性,set方法,set方法/有参构造器/@Bean修饰方法(默认不写)的参数,有参构造器中使用(只有一个有参构造器时可以省略@Atowired不写) 2.@Resource() 按照id 3.跟控制反转搭配使用 @Conditional() @Primary @Profile @Scope @Value 三.配置类标注:@Configuration 四:自定义类想使用Spring容器底层的组件,可以通过实现XXXXAware 原理:XXXXAware功能使用XXXXAwareProcessor实现,可以在setApplicationContext打断点实现
Bean生命周期
一:初始化销毁方法 1.@Bean指定初始化方法,销毁方法 2.类可以通过实现 InitializingBean, DisposableBean 重写里面的两个方法进行初始化,销毁; 3.类可以通过利用 @PostConStruct,@PreDestroy 进行初始化,销毁; 二:初始化方法前后执行 类可以通过@ComponentScan("com.example.LifeCycle.BeanPostProcessor")并实现BeanPostProcessor postProcessBeforeInitialization初始化之前处理工作 postProcessAfterInitialization初始化之后实现的功能 https://www.bilibili.com/video/BV1L4411Q7qS?p=16&spm_id_from=pageDriver&vd_source=64df8ef6f90400ca816f22bf5f1fb0f8 显示BeanPostProcessor的原理
同套代码在gitee上面地址为: