- 博客(5)
- 资源 (1)
- 收藏
- 关注
原创 SpringBoot:Bean的生命周期
doCreateBean()首先创建Bean的实例(createBeanInstance),允许后处理程序修改已合并Bean的定义,解决循环依赖问题,Bean属性填充(populateBean),初始化Bean(initializeBean)以及注册Bean的销毁。getBean()会调用doGetBean(),doGetBean()会先判断Bean是否被实例化,如果未被实例化则会调用createBean()。之前我们关注onRefresh(),作用是。
2024-01-20 15:46:55
410
原创 SpringBoot:事务失效
Java中有四种访问权限:public、protected、default和private,而@Transactional是通过AOP实现的事务管理,并通过动态代理来调用被事务管理的方法,被代理的方法必须是public修饰的,否者事务不生效。不过在实际开发中有时会遇到事务不生效的情况,总结一下,以备不时之需。SpringBoot中事务回滚需要方法抛出声明的异常,如果方法中捕获了异常或者未抛出声明的异常,事务就不会回滚。3.方法未被事务管理或事务传播机制选择非事务。4.多线程操作或使用异步操作。
2024-01-09 20:30:35
717
原创 SpringBoot:事务
总的来说,编程式事务管理需要在代码中显式地控制事务的开始、提交和回滚,而声明式事务管理可以通过注解来定义事务的边界和属性,由SpringBoot框架自动管理事务。表示创建⼀个新的事务,如果当前存在事务,则把当前事务挂起。也就是说不管外部⽅法是否开启事务,Propagation.REQUIRES_NEW 修饰的内部⽅法会新开启⾃⼰的事务,且开启的事务相互独⽴,互不⼲扰。如果当前存在事务,则创建⼀个事务作为当前事务的嵌套事务来运⾏;以⾮事务⽅式运⾏,如果当前存在事务,则把当前事务挂起。
2024-01-08 18:27:29
455
1
原创 SpringBoot启动类中的run方法
refresh()的具体实现在AbstractApplicationContext抽象类中,实际上就是一个SpringBean的加载过程。在其中有个onRefresh(),作用是。factory.getWebServer(getSelfInitializer())通过工厂方式创建web容器,可以看到它是个接口,因为并不只有tomcat一种容器。其中refresh()会调用ConfigurableApplicationContext接口的refresh()。
2024-01-05 15:54:54
616
1
原创 @SpringBootApplication注解(版本2.7.10)
通过(String[])(new AutoConfigurationPackages.PackageImports(metadata)).getPackageNames()方法可以获取到扫描的包路径,可以看到在调用该方法时传入了metadata参数,而metadata正是标注了@SpringBootApplication的主配置类。@SpringBootConfiguration除了元注解之外,就只有一个@Configuration,那也就是说这个注解就相当于@Configuration,作用为。
2024-01-03 18:14:15
1339
1
expert one-on-one j2ee development without ejb
2017-10-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人