- 博客(17)
- 收藏
- 关注
原创 SpringBoot原理:run方法解读
DEFAULT是直接编写的一个匿名内部类,其实已经很明确了,正是根据`webApplicationType`类型进行判断,如果是SERVLET,那么久返回专用于Web环境的AnnotationConfigServletWebServerApplicationContext对象(SpringBoot中新增的),否则返回普通的AnnotationConfigApplicationContext对象,也就是到这里为止,Spring的容器就基本已经确定了。接着我们来看run方法里面做了什么事情。
2022-09-16 16:01:22
637
1
原创 SpringBoot原理:SpringApplication类
它在 META-INF/spring.factories 文件中配置接口的实现类名称,然后在程序中读取这些配置文件并实例化。说白了就是人家定义接口,但是实现可能有很多种,但是核心只提供接口,需要我们按需选择对应的实现,这种方式是高度解耦的。关键就在这里了,它是如何知道哪些类是ApplicationContextInitializer的实现类的呢?- 数据库驱动加载接口实现类的加载:JDBC加载不同类型数据库的驱动。- 日志门面接口实现类加载:SLF4J加载不同提供商的日志实现类。
2022-09-16 14:54:45
363
原创 Spring原理:PostProcessor与AOP原理
我们可以给这些部分分别打上断点来观察一下此方法的整体加载流程。观察控制台输出,成功加载Bean实例。
2022-08-30 10:59:00
607
原创 Spring原理:BeanFactory与IOC容器
方法了,此方法被重载了很多次,可以接受多种参数,因此,我们可以断定,一个IoC容器最基本的行为在此接口中已经被定义好了,也就是说,所有的BeanFactory实现类都应该具备容器管理Bean的基本能力,就像它的名字一样,它就是一个Bean工厂,工厂就是用来生产Bean实例对象的。由于Spring的源码极为复杂,因此我们不可能再像了解其他框架那样直接自底向上逐行干源码了(可以自己点开看看,代码量非常之多),我们可以先从一些最基本的接口定义开始讲起,自顶向下逐步瓦解,那么我们来看看。...
2022-08-29 20:36:14
177
原创 Mybatis深入:事务隔离级别和使用Spring事务管理
(对于虚读和幻读的区分:虚读是某个数据前后读取不一致,幻读是整个表的记录数量前后读取不一致)
2022-08-29 11:24:40
602
原创 Mybatis深入:数据源
使用数据源方式建立数据库连接的原因: 数据库链接的建立和关闭是极其耗费系统资源的操作,通过DriverManager获取的数据库连接,一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完后立即关闭连接,频繁的打开、关闭连接会持续消耗网络资源,造成整个系统性能的低下。一般比较常用的DataSource实现,都是采用池化技术,就是在一开始就创建好N个连接,这样之后使用就无需再次进行连接,而是直接使用现成的Connection对象进行数据库操作。......
2022-08-27 11:09:45
188
原创 2022.5.06
1.所有方法都必须有返回值?构造方法没有返回值,默认返回类型是对象类型本身。2.只声明对象,这个对象是没有内存的,要new出征3.析构函数,要调用System.gc();来销毁对象。
2022-05-06 15:25:11
156
原创 2022.5.5
1.流程控制结构*if*if else*if else if elseif(条件表达式){执行的代码块1}else if(执行的代码块2)else{执行的代码块3}*switchswitch(变量/表达式){case 值1:代码块1;break;case 值2:代码块2;break;case 值3:代码块3;break;}*while*dowhile*"equals"和"=="比较字符串如果字符串是直接赋
2022-05-05 17:03:00
156
原创 2022.3.20
*java流程控制-----用户交互scaner作用:用来获取用户的输入使用next()方法接受使用nextline()方法接收比较:
2022-03-20 20:37:25
383
原创 2022.3.20
*运算符小结字符串拼接符三元运算符*包机制本质就是一个文件夹一般用公司域名倒置作为包名导包:星号是通配符的意思,代表这个包下面的所有类。*Javadoc1.用命令行生成javadoc文档2.用Idea生成javadoc文档...
2022-03-20 15:54:04
91
原创 2022-3-18
*变量定义 :可以变化的量注意:*每个变量都有类型,类型可以是基本类型,也可以是引用类型。*变量名必须是合法的标识符*变量声明是一条完整的语句,因此每一个声明都必须以分号结束;* 作用域1.类变量2.实例变量3.局部变量*常量定义:初始化后不会改变的值*变量命名规范*运算符...
2022-03-18 21:26:51
179
原创 2022.3.16
1.类型转换*运算中,不同类型的数据先转化为同一类型,然后进行运算。强制转换 (类型)变量名 高--低自动转换 低---高*不能对布尔值进行转换*不能把对象类型转换为不相干的类型
2022-03-17 09:48:21
297
原创 2022.3.15
1.标识符*关键字*所有标识符可以以字母A-Z(a-z)或者$和下划线(_)开头,但不能以数字开头。*不能用标识符作为变量名或者方法名。*标识符是大小写敏感的。2.数据类型*强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义才能使用。*弱类型语言*1B=8bit*强制转换可以把字符变成数字,字符的本质还是数字。*less is more代码要精简易读...
2022-03-15 18:13:07
110
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人