本文章算是给尚硅谷-SpringBoot学习先打基础了,后面看SpringBootApplication源码的时候能更清晰
视频地址:https://www.bilibili.com/video/BV1gW411W7wy?p=61&vd_source=510ec700814c4e5dc4c4fda8f06c10e8
🔥1. 容器篇
1.1. IOC-基本注解
1.1.1 @Lazy
针对单实例,在调用容器时才加载bean
1.1.2 @Conditional
- 自定义类实现Condition接口,然后配置条件
- @Conditional可以引用上面自定义类,然后加载类或者方法上,只有满足条件才能注入@Bean
1.1.3 @Import
1.1.3.1 基本注入组件方法
给容器注册组件方法:
- 包扫描+组件扫描:修饰类就能创建一个对象
- @Bean注入 (配合@Configuration):本质就是修饰方法,然后创建一个对象
- @Import快速导入(配合@Configuration):注入进去的类型,也就是类的路径
- 使用@EnableConfigurationProperties
- 使用FactoryBean
- 就是实现FactoryBean接口,然后利用@Bean注册这个工厂bean,这样就能实现行的Bean注入
注入属性:
1. @ConfigurationProperties + @Component
1. @Value
装配组件(上面注册主键后就能使用):
1. @Autowired:可以修饰方法和构造器,就是IOC容器中获取到这个相应名字的对象(就等同于之前set函数赋值对象的操作)
1. @Resource
1. @Inject(和@Autowired等价):需要导入包,java规范
1.本质就是单例Controller组件,然后内部使用@Autowired注入IOC容器中各个Bean,有冲突就使用@Qualifier
2.各个底层又是使用new 各个对象,保证了每个线程方法访问不会冲突。
@Configuration组件上可以使用组件扫描@ComponentScan把各个组件加载到本类中来
1.1.3.2 @ImportSelector, @ImportDefinBEAN(略)
1.1.4 Bean–执行初始化/销毁方法
就是初始化Bean后,想执行自定义关于这个Bean的初始化和销毁方法怎么弄
1.1.4.1 @Bean注解
@Bean(initMethod = "Bean类中的初始化方法", destroyMethod = "Bean类中的销毁方法")
1.1.4.2 JSR250–@PostConstruct/@PreDestory
@PostConstruct:在bean初始化与构造器属性
@PreDestory:容器销毁Bean前的清理工作
1.1.4.3 BeanPostProcessor
后置处理器:BeanPostProcessor
1.2 AOP–@EnableAspectJAutoProxy(略)
@EnableAspectJAutoProxy:雷神说必须要开启,但是实际用AOP切面的时候不开启也能使用,而且我开启这个注解主要是在事务传播行为的时候用到,有待商榷吧。
1.3 声明式事务–@EnableTransactionManagement(略)
@EnableTransactionManagement:事务管理器,我也没用到也能使用事务管理。
🔥2. 扩展原理篇
2.1.Spring源码(略)
就是把bean全加载进来,然后使用饿汉或者懒汉加载(默认饿汉,可由用户自定义)