- 博客(103)
- 收藏
- 关注
原创 Spring解决循环依赖的机理
从源码中可以看到,spring会先从一级缓存中获取Bean,如果获取不到,则从二级缓存中获取Bean,如果二级缓存还是获取不到,则从三级缓存中获取之前曝光的ObjectFactory对象,通过ObjectFactory对象获取Bean实例,这样就解决了循环依赖的问题。先把所有的单例Bean实例化出来,放到一个集合当中(我们可以称之为缓存),所有的单例Bean全部实例化完成之后,以后我们再慢慢的调用setter方法给属性赋值。也就是说,Bean都是单例的,我们可以先把所有的单例Bean实例化出来,放到。
2025-08-10 22:38:03
317
原创 Bean的生命周期
第一步:实例化Bean第二步:Bean属性赋值第三步:初始化Bean init-method=“initBean”第四步:使用Bean第五步:销毁Bean destroy-method=“destroyBean”
2025-08-10 20:49:17
197
原创 设计模式 工厂模式
简单工厂模式又叫做:静态工厂方法模式。Spring中的BeanFactory就使用了简单工厂模式。抽象产品 角色具体产品 角色工厂类 角色。
2025-08-10 13:11:05
180
原创 Bean的生命周期
Spring框架中的Aware接口允许Bean获取容器相关信息。主要接口包括BeanNameAware、BeanClassLoaderAware和BeanFactoryAware。实现BeanNameAware接口的Bean可以获取其在容器中的名称;实现BeanClassLoaderAware接口的Bean能获取加载它的类加载器实例;而实现BeanFactoryAware接口的Bean可访问所属的BeanFactory。这些回调接口在Bean初始化过程中被调用,为Bean提供了与Spring容器交互的能力。
2025-07-20 16:20:14
113
原创 BeanFactory 和 FactoryBean 的区别
摘要: BeanFactory是Spring IoC容器的核心接口,负责管理Bean的创建和生命周期。FactoryBean则是一种特殊的Bean,用于辅助实例化其他复杂对象。两者关键区别在于:BeanFactory是容器本身,属于"工厂的工厂";而FactoryBean是被容器管理的特殊Bean,属于"工厂的Bean"。FactoryBean需要实现特定接口来定义对象创建逻辑,当需要获取FactoryBean本身而非其生产的对象时,需在bean名称前加"&
2025-07-19 22:00:07
419
原创 resources为什么是类的根目录
在 Java 项目中,resources,是因为它被构建工具(如 Maven/Gradle)默认配置为,编译后其中的文件会被直接复制到(或)目录下,与编译后的.class文件处于同一层级,因此在运行时可以通过直接访问,路径相对于类的根目录。
2025-07-15 21:58:05
178
原创 HTTP常见误区
HTTP协议不仅限于互联网和浏览器使用,它可以在任何TCP/IP网络(包括局域网)中工作,支持传输各种数据类型(JSON、XML等)。虽然典型应用是从服务器传输HTML到浏览器,但HTTP也广泛用于API调用、移动App和物联网设备。该协议采用请求-响应模式,是无状态协议(依赖Cookie/Session管理状态),服务器不能主动推送数据。现代HTTP已发展为支持多种应用场景的通用协议。
2025-07-15 14:41:19
161
原创 A O P
本文介绍了Spring AOP(面向切面编程)的基本概念与实现方式。AOP通过动态代理技术在运行时对目标对象进行功能增强,核心概念包括连接点(JoinPoint)、通知(Advice)、切入点(PointCut)和切面(Aspect)。文章详细讲解了两种切入点表达式:execution表达式和基于注解的方式,并提供了代码示例说明如何抽取公共切入点表达式。此外,还介绍了五种通知类型(前置、环绕、后置、返回后和异常通知)的使用方法,以及如何在不同类中引用切入点表达式。文中包含多个图示帮助理解AOP的执行流程和注
2025-07-06 21:56:29
381
1
原创 RESTful
RESTful是一种网络应用程序架构风格,以Roy Fielding提出的资源为中心理念为核心。其特点包括:使用URI标识资源,通过标准HTTP方法(GET/POST/PUT等)操作资源,保持无状态性,支持缓存和分层系统。设计时应遵循资源命名规范(使用名词复数形式)、正确使用HTTP方法(注意幂等性和安全性)和规范状态码(如200/400/404等)。与传统的动词式URL设计相比,RESTful风格更规范统一,适用于公开API和前后端分离场景,但不适合实时通信等特殊需求。实际应用中需避免常见误区,如URL包
2025-07-05 10:42:18
584
原创 Web MVC
Web MVC架构模式将应用分为模型(Model)、视图(View)和控制器(Controller)三个核心组件。模型处理数据逻辑,视图负责展示,控制器协调用户请求。该模式实现关注点分离,提升可维护性和可测试性。Spring MVC是典型实现,通过DispatcherServlet、HandlerMapping等组件处理请求流程。现代演进包括前后端分离、注解驱动和异步支持。MVC优势在于职责分离、团队协作和组件复用,是Web开发的重要架构模式。
2025-07-01 20:37:59
709
原创 关于knife4j 网页接口文档设置全局变量的请求参数之后,换到另一个接口没有反应
强制刷新浏览器(Ctrl + F5)。清除浏览器缓存,或尝试无痕模式访问。
2025-06-29 20:32:30
95
原创 JSESSIONID Session Cookie
JSESSIONID是 Java Web 应用(如基于 Tomcat、Spring 的服务)用于跟踪用户会话(Session)的,通常以的形式存储在浏览器中。它的核心作用是实现服务器端的会话管理(Session Management),确保用户在不同请求间保持状态。ABC123JSESSIONIDSet-Cookie当用户首次访问网站时,服务器(如 Tomcat)会自动创建一个 Session 并生成JSESSIONID。
2025-06-29 20:07:33
736
原创 java反射
普通类 (如Car)Class对象 (如Car.class)本质你写的代码(模板)JVM创建的元数据对象创建由开发者定义由JVM自动创建内容字段/方法的实现类的描述信息(元数据)用途创建对象 (new Car()反射操作 (位置源代码文件 (.java)JVM内存中。
2025-06-01 12:42:24
585
原创 Mybatis ORM SpringORM
它的核心思想是:在面向对象的编程语言(如 Java, Python, C# 等)中使用的“对象”与关系型数据库(如 MySQL, PostgreSQL, Oracle 等)中存储数据的“表”之间,建立一座桥梁,实现自动的相互转换。Spring 中的 ORM 不是一个独立的 ORM 工具,而是 Spring 框架提供的一套强大的支持机制,用于集成和简化第三方 ORM 框架尤其是 Hibernate 和 JPA)在 Spring 应用程序中的使用。
2025-05-31 17:19:59
332
原创 ubuntu下nginx
我尝试把自己的一个index文件设置为默认,复制到/var/www/html下。帮助找到nginx.conf也就是它的配置文件的位置。找到root /var/www/html。ctrl加f5刷新localhost页面。该路径下面有一个default文件查看。放大看到在静态文件部署的配置路径。sudo nginx -V命令。我用的是ubuntu22。
2025-05-25 17:21:15
257
原创 线程Java
进程中的线程是由CPU负责调度执行的,但CPU能同时处理线程的数量有限,为了保证全部线程都能往前执行,CPU会轮询为系统的每个线程服务,由于CPU切换的速度很快,给我们的感觉这些线程在同时执行,这就是并发。用户每发起一个请求,后台就需要创建一个新线程来处理,下次新任务来了肯定又要创建新线程处理的, 创建新线程的开销是很大的,并且请求过多时,肯定会产生大量的线程出来,这样会严重影响系统的性能。调用线程对象的start()方法启动线程(启动后还是执行run方法的)
2025-05-08 08:38:24
930
原创 SQL常见误区
SELECT字段列表FROM表名列表WHERE条件列表GROUP BY分组字段列表HAVING分组后条件列表ORDER BY排序字段列表。。他们的加载顺序。
2025-05-05 14:50:12
306
原创 BOM与DOM(解疑document window关系)
定义与作用BOM(Browser Object Model)提供与浏览器窗口交互的接口,用于控制导航、窗口尺寸、历史记录等浏览器行为window:浏览器窗口的顶层对象,包含全局属性和方法(如 alert())BOM的核心对象是window,而。通过可以直接访问DOM的根节点,这表明DOM在结构上是BOM的子集。
2025-04-24 22:16:41
422
原创 JavaStream流
在java.util.stream util包下的新增API,可以用于操作集合或者数组的数据。功能强大(提供了很多结合Lambda的API),性能高效(有很多优化),代码简洁(Lambda),可读性好。传统方案用Sream流把stream看成一个传送带,上面有集合中的东西。新方法只需要一行。步骤:1.获取集合或数组的Stream流2.调用流的各种方法。
2024-11-04 19:50:24
421
原创 存储和读写方案
文件存储在磁盘中,而不是内存中。断电或者程序终止,文件还在。广义的文件包括文件夹。不能读写文件里面存储的数据,所以怎么办?用IO流。
2024-11-03 14:21:40
321
原创 JavaSet集合
打印出的还是张三,并不是我们想象的无重复,去掉多余的张三和李四,这是因为他们的哈希值不一样,在建立哈希表的时候自然被散开了。解决:在学生类中重写1.先令哈希值相同2.重写equals,以此在建立链表的时候判断出相同。
2024-10-27 19:51:16
444
原创 Java泛型Generic
定义类,接口,方法时,同时声明了一个或多个类型变量,如泛型类,泛型接口,泛型方法泛型可以约束在编译阶段能操作的数据类型,并自动检查。如ArrayList List =new ArrayList();E代表element,元素类型,T代表返回值类型,K键类型,V值类型。一般用E就可以。
2024-10-24 18:32:01
410
原创 Java面向对象高级
Java提供关键字interface定义出接口,这是一种特殊类。JDK 8之前,接口中只能定义常量和抽象方法。接口中定义常量,默认加上括号里面的,(public static final)String MY_NAME=ARVA,括号里面的不写但是会默认加上。(public abstract) void run,括号里面的不写但是会默认加上。接口不能创建对象。接口是用来被类**实现(implement)**的,实现接口的类称为实现类,一个类可以实现多个接口。
2024-10-19 19:20:57
701
原创 Java继承
提高代码复用性,因为有的类会有重复内容。extends子类可以继承父类的非私有成员(public)子类对象其实是由子类和父类多张设计图创建出来的对象。
2024-09-25 19:04:08
291
原创 Java面向对象编程
先设计对象的模板(设计图)创建对象的格式:类名 对象名 = new 类名();s1.name=“王祖贤”把数据和对数据的处理(比如打印函数)放到同一个类中。变量存在栈里,变量指向对象,对象存在堆里,对象有类地址,类存在方法区中。
2024-09-24 20:46:33
713
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人