spring
Key~美好的每一天
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spring中的@Autowired和@Bean有什么区别?
Bean是用于注册bean的,@Component是用于注册我们自己定义的bean,将自定义的bean注册到spring容器中,而对于Maven导入的一些第三方jar包要注册到spring中就需要使用@Bean注解了,@Bean注解用于方法上,在这个方法中我们产生对象,这个对象就会注册到容器中。在方法上使用是setter注入;在构造器上使用是构造注入。@Autowired按照类型注入bean,如果spring容器中不存在此类型的bean,会报错,可以搭配@Qulifier来按照name注入bean。原创 2025-08-12 15:13:49 · 496 阅读 · 0 评论 -
Spring是怎么解决循环依赖的?
/ 单例对象的cache:一级缓存// 提前暴光的单例对象的Cache:二级缓存// 单例对象工厂的cache:三级缓存>>(16);其中,一级缓存是用来存放初始化完毕的bean,二级缓存用来存放已经实例化但是还未初始化的bean,三级缓存用来存放生成bean的工厂对象。原创 2024-12-18 15:46:47 · 515 阅读 · 0 评论 -
Spring Bean的生命周期
首先Spring会去扫描xml、注解,把所有的BeanDifinition对象注册到容器中,BeanDifinition对象主要包含了类的一些信息(类名、方法、构造器、属性等)。然后筛选出单例的BeanDifinition,通过反射去实例化bean,对于原型bean是当去使用它的时候再实例化。然后再调用bean的后置处理器的after方法,Spring Aop就是在这里实现的。spring bean的生命周期主要分为四个阶段:实例化、属性填充、初始化、使用和销毁。最后使用完bean并销毁。原创 2025-03-10 16:58:31 · 211 阅读 · 0 评论 -
Spring Aop的实现方式
aop是一种面向切面编程的思想,主要就是为了降低代码的耦合度,比如我们有很多方法都需要去记录日志,如果这些方法中都去写记录日志的代码,太冗余了,于是可以用面向切面编程的思想,去定义一个切面,去横向切入到需要记录日志的地方。原创 2025-03-11 19:27:00 · 186 阅读 · 0 评论 -
Spring事务的传播行为
Nested,如果存在外层事务则嵌套外层事务,不存在则新建一个事务。嵌套事务的意思是如果外层事务提交,嵌套事务也会提交;外层事务回滚,嵌套事务就会回滚;这种场景适用于允许部分失败的业务,比如一个订单中有多个商品,其中有个商品库存不足了,只需要回滚那个商品就行了,其余商品可以下单成功。Required是spring事务默认的传播行为,如果存在外层事务就会融入外层事务,如果没有则新建一个事务。spring的事务传播行为指在一个开启了事务的方法内,去调用了另一个方法,那么事务会怎么传播呢?原创 2025-03-21 11:24:40 · 330 阅读 · 0 评论 -
SpringBoot的自动装配原理
继续进入@EnableAutoConfiguration,发现有个@Import注解,它引入了一个核心类,可以去将META/INF/spring.factories文件中所有的全路径类名的类加载到spring容器中。进入@AutoConfigurationPackage注解,里面也是引入了一个核心类,可以将spirngboot启动类目录及其子目录下的所有bean加载到spring容器中。进入这个注解,里面有@EnableAutoConfiguration,这个注解表示开启springboot自动装配。原创 2025-03-29 16:52:49 · 380 阅读 · 0 评论
分享