自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 Spring系列第14篇:单例bean中使用多例bean,你未必会玩?

*** @param obj 被替换方法的目标对象* @param method 目标对象的方法* @param args 方法的参数*/当调用目标对象需要被替换的方法的时候,这个调用请求会被转发到上面的替换者的reimplement方法进行处理。/*** servieB的方法替换者*/@Override@Override-- 定义替换者bean -->

2023-09-08 10:30:30 102 1

原创 Spring系列第13篇:使用继承简化bean配置(abstract & parent)

bean元素的abstract属性为true的时候可以定义某个bean为一个抽象的bean,相当于定义了一个bean模板,spring容器并不会创建这个bean,从容器中查找abstract为true的bean的时候,会报错BeanIsAbstractException异常bean元素的parent属性可以指定当前bean的父bean,子bean可以继承父bean中配置信息,也可以自定义配置信息,这样可以覆盖父bean中的配置。

2023-09-05 17:06:38 118

原创 Spring系列第12篇:lazy-init:bean延迟初始化

延迟初始化的bean无法在程序启动过程中迅速发现bean定义的问题,第一次获取的时候可能耗时会比较长。在实际工作中用的比较少,作为了解,以后碰到的时候会有个印象。

2023-09-05 17:06:01 72

原创 Spring系列第11篇:bean中的autowire-candidate又是干什么的?

上一篇文章Spring系列第10篇:primary可以解决什么问题?中遇到的问题我们再来回顾一下,当容器中某种类型的bean存在多个的时候,此时如果我们从容器中查找这种类型的bean的时候,会报下面这个异常:原因:当从容器中按照类型查找一个bean对象的时候,容器中却找到了多个匹配的bean,此时spring不知道如何选择了,处于懵逼状态,就会报这个异常。这种异常主要出现在2种场景中:从容器容器中查找符合指定类型的bean,对应BeanFactory下面的方法:场景2:自动注入方式设置为by

2023-09-04 10:50:58 67 1

原创 Spring系列第10篇:primary可以解决什么问题?

当从容器中查找一个bean的时候,如果容器中出现多个Bean候选者时,可以通过primary="true"将当前bean置为首选者,那么查找的时候就会返回主要的候选者,否则将抛出异常。

2023-09-04 10:50:18 36 1

原创 Spring系列第9篇:depend-on到底是干什么的?

无依赖的bean创建顺序和定义的顺序一致,销毁顺序刚好相反通过构造器强依赖的bean,会先创建构造器参数中对应的bean,然后才会创建当前bean,销毁顺序刚好相反depend-on可以指定档期bean依赖的bean,通过这个可以确保depend-on指定的bean在当前bean创建之前先创建好,销毁顺序刚好相反bean的销毁顺序和bean创建的顺序相反。

2023-08-28 09:25:35 74 1

原创 Spring系列第8篇:自动注入(autowire)详解,高手在于坚持!

xml中手动注入存在的不足之处,可以通过自动注入的方式来解决,本文介绍了3中自动注入:通过名称自动注入、通过类型自动注入、通过构造器自动注入按类型注入中有个比较重要的是注入匹配类型所有的bean,可以将某种类型所有的bean注入给一个List对象,可以将某种类型的所有bean按照`bean名称->bean对象`的映射方式注入给一个Map对象,这种用法比较重要,用途比较大,要掌握spring中还有其他自动注入的方式,用起来会更爽,后面的文章中我们会详细介绍。

2023-08-28 09:24:36 763 1

原创 Spring系列第7篇:依赖注入之手动注入

本文主要讲解了xml中bean的依赖注入,都是采用硬编码的方式进行注入的,这种算是手动的方式注入普通类型通过value属性或者value元素设置注入的值;注入对象如果是容器的其他bean的时候,需要使用ref属性或者ref元素或者内置bean元素的方式还介绍了其他几种类型List、Set、Map、数组、Properties类型的注入,多看几遍加深理解后面我们将介绍spring为我们提供的更牛逼的自动注入。

2023-08-25 09:33:30 116 1

原创 Spring系列第6篇:玩转bean scope,避免跳坑里!

有时候,spring内置的几种sope都无法满足我们的需求的时候,我们可以自定义bean的作用域。我们来看一下这个接口定义/*** 返回当前作用域中name对应的bean对象* name:需要检索的bean的名称* objectFactory:如果name对应的bean在当前作用域中没有找到,那么可以调用这个ObjectFactory来创建这个对象**//*** 将name对应的bean从当前作用域中移除**/@Nullable/**

2023-08-25 09:32:34 29 1

原创 Spring系列第5篇:创建bean实例这些方式你们都知道?

创建一个静态工厂类,用于生成UserModel对象。/*** 公众号:路人甲Java,工作10年的前阿里P7分享Java、算法、数据库方面的技术干货!坚信用技术改变命运,让家人过上更体面的生活!*//*** 静态无参方法创建UserModel* @return*/userModel.setName("我是无参静态构造方法创建的!");/*** 静态有参方法创建UserModel* @param name 名称* @param age 年龄* @return*/

2023-08-24 09:30:01 105 1

原创 Spring系列第4篇:xml中bean定义详解(-)

名称和别名可以通过bean元素中的id和name来定义,具体定义规则如下::当id存在的时候,不管name有没有,取id为bean的名称当id不存在,此时需要看name,name的值可以通过或者空格分割,最后会按照分隔符得到一个String数组,数组的第一个元素作为bean的名称,其他的作为bean的别名当id和name都存在的时候,id为bean名称,name用来定义多个别名当id和name都不指定的时候,bean名称自动生成,生成规则下面详细说明。

2023-08-24 09:28:34 32 1

原创 Spring系列第3篇:Spring容器基本使用及原理

本文主要介绍了spring容器的概念、bean的概念、常见的spring容器,以及spring容器的使用步骤;下一篇我们将详解bean的定义。

2023-08-23 09:19:22 27

原创 Spring系列第2篇:控制反转(IoC)与依赖注入(DI),晦涩难懂么?

IOC控制反转,是一种设计理念,将对象创建和组装的主动控制权利交给了spring容器去做,控制的动作被反转了,降低了系统的耦合度,利于系统维护和扩展,主要就是指需要使用的对象的组装控制权被反转了,之前是自己要做的,现在交给spring容器做了。DI依赖注入,表示spring容器中创建对象时给其设置依赖对象的方式,通过某些注入方式可以让系统更灵活,比如自动注入等可以让系统变的很灵活,这个后面的文章会细说。spring容器:主要负责容器中对象的创建、组装、对象查找、对象生命周期的管理等等操作。

2023-08-23 09:18:42 25

原创 有关并行的两个重要定律

m2内部的4个任务无依赖的,即可以并行进行处理,4个任务同时并行,当cpu数量大于等于4的时候,可以让4个任务同时进行,此时m2耗时最小,即100ms,cpu为2个的时候,同时只能够执行2个任务,其他2个任务处于等待cpu分配时间片状态,此时m2耗时200ms;需要从根本上修改程序的串行行为,提高系统内可并行化的模块比重,在此基础上,合理增加并行处理器数量,才能以最小的投入,得到最大的加速比。根据Gustafson定律,我们可以更容易地发现,如果串行化比例很小,并行化比例很大,那么加速比就是处理器的个数。

2023-08-22 09:38:08 30 1

原创 Spring系列第1篇:为何要学spring?

spring是一个简化java企业级开发的一个框架,内部包含了很多技术,比如:控制反转&依赖注入、面向切面编程、spring事务管理、通过spring集成其他框架、springmvc、springboot、springcloud等等,这些都是围绕简化开发展开的技术,后面会对每个知识点详细介绍。

2023-08-22 09:36:48 25

原创 并发级别

如果线程之间是有优先级的,那么线程调度的时候总是会倾向于先满足高优先级的线程。但如果锁是公平的,按照先来后到的规则,那么饥饿就不会产生,不管新来的线程优先级多高,要想获得资源,就必须乖乖排队,这样所有的线程都有机会执行。如果说阻塞的控制方式是悲观策略,也就是说,系统认为两个线程之间很有可能发生不幸的冲突,因此以保护共享数据为第一优先级,相对来说,非阻塞的调度就是一种乐观的策略。在无锁的情况下,所有的线程都能尝试对临界区进行访问,但不同的是,无锁的并发保证必然有一个线程能够在有限步内完成操作离开临界区。

2023-08-21 09:37:32 28

原创 核心概念

你已经支付完成,想干什么就能去干什么,出去溜几圈都不成问题,等送货上门的时候,接到商家的电话,回家一趟签收就完事了。实际上,如果系统内只有一个CPU,而使用多进程或者多线程任务,那么真实环境中这些任务不可能是真实并行的,毕竟一个CPU一次只能执行一条指令,在这种情况下多进程或者多线程就是并发的,而不是并行的(操作系统会不停地切换多任务)。在并行程序中,临界区资源是保护的对象,如果意外出现打印机同时执行两个任务的情况,那么最有可能的结果就是打印出来的文件是损坏的文件,它既不是小王想要的,也不是小明想要的。

2023-08-21 09:34:44 23

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除