Spring
组件
@Configuration 这是一个配置类
@ComponentScan 扫描规则
@Scope 扫描范围 单实例,ioc启动的时候创建一次,多实例用到了才会去创建,request针对web创建一个bean,session同一个session创建一个实例
@lazy 懒加载 用在单实例bean上,是懂的时候才去加载
@Conditional 注册bean 动态的加载bean,可以做一些定制化的操作,写condition类,继承接口实现方法
@Import 注册bean
bean的生命周期
创建=初始化-销毁
对bean的创建进行增强拦截,调用init方法的前后,ioc要创建,初始化所有容器相关的后置处理器。
通过反射机制创建的bean。
实例化bean的几种方式
1.import
2.bean
3.包扫描
4.FactoryBean
@primary
@Resource和Autowired的区别如下:
@Resource和Autowired一样可以装配bean
@Resource缺点: 不能支持@Primary功能
不能支持@Autowired(required = false)的功能
@Transactional
事务的级别
比数据库的级别多一个
ACID
事务的几个特性:原子性,一致性,隔离性,持久性
脏读
不可重复读
幻读
默认:采用数据库默认隔离界别。
读未提交 - 什么问题都可能有。
读提交 - 脏数据的问题解决了。可以读并发事务提交过的数据。
可重复读 - 不可重复读的问题 (行锁)
串行化 - 幻读的问题 (表锁)
事务的传播行为
7种
支持当前事务:让前没事务1.创建事务2.以非事务方式运行3.报错
不支持当前事务:当前有事务1.创建一个新事物,当前事务挂起2.非事务方式运行,当前事务挂起3.非实物方式运行,存在事务报错
灵活嵌套当前事务,或者创建一个新事物