- 博客(20)
- 收藏
- 关注
原创 SpringMVC面试问题-------话题扩展
SpringMVC就是将Servlet一些通用功能进行了抽取和封装后的一个框架。前端控制器:由SpringMVC提供,主要负责接收参数和返回页面和数据。处理器:由开发人员编写,主要负责参数的处理和业务层调用。使用它之后,代码主要有两部分组成:前端控制器、处理器。可以大大提升开发效率。
2024-08-28 21:27:54 75
原创 Spring IOC面试-----话题扩展----展现自我价值
出现同名的情况下,我们用@Qualifier("")起别名来解决问题,或者设置首选用@Primary注解,@Resource。Repositroy表示持久层,因为MyBatis技术的使用,现在Repositroy基本不用了,用的都是Mapper。因为Bean注入是通过类名来作用的,所以Bean类一般不会同名。而反转,是指将这个权限交给IOC容器,让其自行创建bean对象。IOC 创建好bean对象后,我们通过依赖注入来获取相应对象。分开了说,控制就是创建bean对象的操作过程,或者说是权限。
2024-08-24 21:23:30 170
原创 Mybatis执行流程
读取MyBatis配置文件:mybatis-config.xml加载运行环境和映射文件构造会话工厂SqlSessionFactroy会话工厂创建SqlSession对象操作数据库的接口,Exector执行器,同时负责查询缓存的维护输入参数映射输出结果映射
2024-08-14 21:54:26 119
原创 mybatis延迟加载及其原理
延迟加载就是说,在需要用到数据的时候才就行加载,不需要用到数据的时候就不加载。mybatis支持一对一关联对象和一对多关联集合对象的延迟加载。我们可以在Mybatis配置文件中选择是否启用延迟加载,lazyLoadingEnable=true/fals,默认是关闭的。其原理就是使用cglib创建目标对象的代理对象。当目标方法被调用时,进入拦截器invoke方法,发现目标方法是null,执行sql查询。获取数据后,调用set方法设置属性值,再继续查询目标方法后,值就有了。
2024-08-14 21:49:07 112
原创 mybatis一级,二级缓存------口述
一级缓存就是,基于PerpetualCache的hashMap本地缓存。它的作用域是Session,当Session进行flush或者close后,该Session中所有Cache就会清空,默认打开一级缓存。二级缓存是基于namespace和mapper的作用域起作用的,不依赖于SQL session,默认也是采用PerpetualCache,HashMap存储。需要单独开启,一个是核心配置,一个是mapper映射文件。当某一个作用域进行了增删改操作后,默认该作用域下所有selec中的缓存将被clear。
2024-08-14 21:39:30 106
原创 spring中事务失效的场景相关问题-----口述
事务失效的场景通常有:异常捕获处理、抛出检查异常、非public方法导致的事务失效。异常捕获处理就是,自己处理了异常,但没有抛出。解决方法是手动抛出异常抛出检查异常。解决方法是配置rollbackfor属性为Exception非public方法导致的事务失效。直接改为public就行
2024-08-14 21:27:25 69
原创 单例bean线程安全问题----口述
spring中的bean又单例singleton和多例prototype两种。单例是指bean在每个springIOC容器中只有一个实例。而多例是指一个bean的定义可以有多个实例。spring框架中的@Scope注解默认值是singleton,也就是单例。一般情况下,spring的bean注入的都是无状态对象,没有线程安全问题。但如果在bean中添加了可修改的成员变量,这就要考虑安全问题了。通常使用多例或者加锁解决。因此,它的线程是不安全的
2024-08-14 21:16:02 85
原创 Java程序员进入新公司,从0开始高效搭建开发环境
jdk安装和环境配置MySQL安装和环境配置redis安装Maven仓库安装和环境配置 Git安装 IDEA下载安装以及插件相关配置 Node.js相关的安装和配置vscode安装和插件安装集合
2024-08-13 11:16:46 232 1
原创 redis安装
redis安装特别简单,只需要下载解压即可。这里提供两个下载地址:官网:https://redis.io中文网:https://www.redis.net.cn/
2024-08-10 20:45:11 90
原创 MySQL安装和环境配置
mysqld --install mysql --defaults-file="这块是刚才创建的my.ini文件路径"# 默认使用mysql_native_password插件认证。# 设置mysql客户端连接服务端时默认使用的端口。#第一个root是用户名,第二个是密码。# 服务端使用的字符集默认为UTF8。# 注意调整下面数据库配置文件的位置。# 创建新表时将使用的默认存储引擎。# 设置mysql客户端默认字符集。# 设置root用户的密码。# 允许连接失败的次数。# 设置3306端口。
2024-08-09 21:12:40 867
原创 Spring框架中循环依赖问题-----口述
所谓三级缓存,其中一级缓存,是单列池,缓存已经经历完整生命周期,已经初始化的bean对象。三级缓存,缓存的是ObjectFactory,表示对象工厂,用来创建某个对象。原因是:在bean生命周期中,构造函数是第一个执行的,Spring框架并不能解决构造函数的依赖注入。解决方法:使用@Lazy进行懒加载,什么时候用到对象,再进行Bean对象的创建。当然,循环依赖注入方式是构造函数时,其产生的问题是Spring框架自己不能解决的。循环引用也叫循环依赖,是两个或两个以上的bean互相持有对方,从而形成闭环。
2024-07-18 15:37:47 124 1
原创 Spring框架中Bean的生命周期------口述
接下来是处理三个Aware结尾的接口(BeanNameAware,BeanFactoryAware,ApplicationContextAware)。再往下有两个初始化,第一个是实现了InitialzingBean当前的这个接口,第二个是自定义的一些init-method的初始化方法。之后要执行的是Bean的一个前置的后置处理器BeanPostProcessor。再之后是Bean的后置处理器BeanPostProcessor,作用是用来增强。之后调用构造函数实例化Bean。然后是Bean的依赖注入。
2024-07-18 14:53:54 144
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人