- 博客(29)
- 资源 (73)
- 收藏
- 关注
原创 java PropertyDescriptor分析
1:简答说明正如其名称,用于描述属性相关的信息,如对于读写方法的设置和读取,获取属性的类型等操作。2:源码2.1:public构造方法public PropertyDescriptor(String propertyName, // 属性的名称 Class<?> beanClass // bean的class类型 )public PropertyDescriptor(String propertyName, // 属性名称 Class<?&g
2021-03-28 21:19:26 414
原创 spring autowire在xml中的使用
1:说明spring为了方便我们完成bean注入相关的配置工作,提供了自动注入功能,我们只需要按照其规则来进行配置,就能够让spring注入我们需要的bean了。2:准备测试类2.1:Statepublic class State { private String stateName; ...snip...}2.2:Countrypublic class Country { // generate setters... private State state; // second
2021-03-27 21:34:18 662 1
原创 spring的ConversionService分析
1:说明这是spring用来进行数据类型转化定义的接口,功能同JDK的PropertyEditor简单使用,源码如下:org.springframework.core.convert.ConversionServicepublic interface ConversionService { // sourceType类型是否可以转换为targetType类型 boolean canConvert(@Nullable Class<?> sourceType, Class<?>
2021-03-21 11:41:22 430
原创 JDK的PropertyEditor简单使用
1:写在前面属性编辑器PropertyEditor是用来将其中数据类型转换为另一种数据类型,是数据类型转换规范接口,源码如下:java.beans.PropertyEditorpublic interface PropertyEditor { // 设置需要编辑的属性 void setAsText(String text) throws java.lang.IllegalArgumentException; // 获取字符串的结果值 String getAsText(); // 获取编辑后的
2021-03-21 11:11:18 605 4
原创 ThreadGroup的简单使用
1:简答说明ThreadGroup是用来管理一组线程的,可以控制线程的执行,查看线程的执行状态等操作,方便对于一组线程的统一管理。2:构造函数2.1:Thread构造函数在创建Thread时可以指定Thread所属的ThreadGroup,其中相关的构造函数如下:public Thread(ThreadGroup group, Runnable target) { init(group, target, "Thread-" + nextThreadNum(), 0);}public T
2021-03-21 10:07:44 909
原创 java8函数式接口Supplier的使用
1:说明java提供了函数式接口java.util.function.Supplier,源码如下:@FunctionalInterfacepublic interface Supplier<T> { /** * Gets a result. * * @return a result */ T get();}作用是通过get方法返回一个T泛型的对象,因此这也是创建对象的一种方式,用法也比较简单,直接实现该接口,然后在实现get方
2021-03-20 16:29:24 783
原创 spring调用bean的初始化方法分析
1:写在前面本文在spring通过不同的方式创建bean的基础上进行分析,作为补充,详细分析spring调用初始化方法的过程。
2021-03-20 11:09:37 476
原创 处理BeanWrapper填充bean属性
1:写在前面本文在spring通过不同的方式创建bean的基础上进行分析,作为补充,详细分析spring是如何填充属性到bean中的。
2021-03-20 10:29:30 246
原创 spring关于单例模式循环依赖的处理
1:写在前面本文在spring通过不同的方式创建bean的基础上进行分析,作为补充,详细分析spring是如何解决单例模式下的循环依赖的。
2021-03-20 10:13:49 710
原创 spring通过不同的方式创建bean
1:写在前面本文在spring通过不同的方式创建bean的基础上进行分析,作为补充,详细分析spring通过构造函数,工厂方法等创建bean的过程。
2021-03-20 09:46:03 271 1
原创 spring创建bean的几种方式分析
1:配置文件主要是通过bean的方式,另外也可以通过自定义标签的方式来完成。2:注解通过@Component系的注解,如常用的@Controller,@Service,@Repository,@Configuration等。3:FactoryBean接口spring定义了该接口,允许,我们自定义bean的实例化的过程,具体参考spring的FactoryBean分析。4:factory-method这种方式通过我们自己定义类,然后自定义定义方法的方式来来创建bean,相比于3:Factory
2021-03-18 15:16:22 124
原创 基于DCL的单例懒汉模式实现
1:什么是DCL全称是Double Check Lock,即双重锁检查,是在进入同步代码块之前和之后都进行一次检查操作,之所以在进入同步代码块再检查一次的原因是,有可能在外部检查后,获取同步锁之前,当前持有锁的线程,在释放锁之前已经改变了系统状态,如下代码:volatile int x = 1;// 第一次检查if (x == 1) { // 获取同步锁 synchronize(mutexLock) { // 第二次检查 if (x == 1) { // 做一些操作 ....
2021-03-16 17:30:03 280
原创 spring循环依赖分析
1:写在前面这里的循环依赖指的是基于引用的依赖,而非depend-on或者是其他。当A引用B,B引用C,C又引用A就构成了循环引用,也就是我们平时所说的循环依赖了,这里也有不同的情况,bean为单例的,bean为原型的,基于属性构成的循环依赖,基于构造函数参数构成的循环依赖,我们来分别看下这些情况。2:单例基于属性的循环依赖2.1:定义3个类public class SingletonByPropertyA { private SingletonByPropertyB singletonBy
2021-03-15 19:12:31 185
原创 spring的BeanPostProcessor分析
1:作用在spring bean的生命周期中加入自定义逻辑。2:接口源码:public interface BeanPostProcessor { // 该方法在调用完毕构造方法,setter方法后,执行init-method方法前 // 执行,参数为当前状态下的bean,以及bean的名称 @Nullable default Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansEx
2021-03-14 19:57:25 340
原创 spring如何控制bean的初始化顺序
1:写在前面在工作中经常有这样的需求,希望某个spring bean初始化之前其他的某个spring bean已经完成初始化,我们可以称之为依赖,目前据我所知有两种方式完成这种需求,第一种就是,将被依赖的bean作为依赖bean的构造函数的参数,第二种方式就是通过spring提供的depend-on,下面我们分别来看下这两种方式。2:构造函数2.1:定义被依赖的类public class ByConstructorClsA {}2.2:定义依赖类注意在构造函数中使用2.1:定义被依赖的类中定
2021-03-12 10:30:28 1152
原创 修改spring bean状态的几种方式分析
1:自定义标签1.1:自定义bean子标签通过自定义bean子标签的方式可以在生成spring bean前,对当前的bean标签解析的BeanDefinition(一般是GenericBeanDefinition)进行装饰修改,从而达到干预bean的生成的目的,详细可以参考spring通过自定义标签干预bean的生成过程。1.2:自定义bean同级标签这种方式可以掌控自定义标签解析为BeanDefinition的过程,详细可以参考spring是如何解析自定义标签的。2:BeanFactory对
2021-03-11 09:01:02 1004
原创 spring的FactoryBean分析
1:有什么用正常我们创建bean的时候都是使用配置的方式,配置后由spring来统一加载创建放到IOC容器中,比如只是简单的通过构造函数,通过setter方法等创建,并且相关的参数的值也都是确定的,此时使用配置的方式无疑是最好的选择,但是如果是bean创建没有那么简单,比如创建对象需要数据需要经过复杂的解析,配置的方式就无法实现了。...
2021-03-10 17:31:41 256
原创 spring通过自定义标签干预bean的生成过程
1:原理在spring解析xml为BeanDefinition的过程中,解析bean标签在解析了6个主要的默认标签标签之后,会调用解析自定义标签,这些自定义标签也是bean标签的子标签,我们可以编写这些自定义标签的处理器,在该注册器内可以通过修改当前的BeanDefinition来打到干预bean的生成的效果,然后注册自定义注册器,注册之后spring在解析自定义标签的时候就会通过标签名注意不带有命名空间获取我们自定义的注册器,并调用。2:例子我们要实现的效果是,通过自定义标签,来修改通过proper
2021-03-06 11:26:30 274 3
原创 spring的自定义标签
1:写在前面spring默认提供的标签,我们常用的bean标签,property,constructor-arg等,spring也允许我们自定义标签。2:默认标签的解析过程我们这里以xsd约束文件为例,来简单描述,首先需要有一个xsd的约束文件,然后需要有一个spring.schema文件来描述命名空间和xsd文件的对应关系,这些在自定义标签的时候也是必不可少的,除此之外我们自定义的标签还需要一个解析的类,因此还需要有这样的一个类,在spring中这个类必须实现org.springframework.
2021-03-05 19:05:29 1222 2
原创 spring的replaced-method分析
1:分析实现动态替换某bean的某个方法的效果,可以实现无需修改代码,改变执行逻辑的功能。2:实例2.1:定义被替换方法的类public class ReplacedMethodCls { public void sayHi() { System.out.println("hi from old method"); }}2.2:定义替换的类需要实现org.springframework.beans.factory.support.MethodReplacer接
2021-03-03 18:23:22 588 2
原创 spring的lookup-method分析
1: 用法通过定义一个抽象类,并定义一个抽象方法,使用该抽象方法获取需要的bean。2:实例2.1:定义用于定义bean的类public class MyLookUpMethodCls {}2.2:定义抽象类public abstract class MyLookUpMethodAbstractCls { public abstract MyLookUpMethodCls returnMyLookUpMethodCls();}2.3:配置文件<?xml version=
2021-03-03 16:31:32 488 1
原创 spring配置中的abstract,parent分析
1:分析我们在定义bean的时候,可能存在多个bean存在相同属性的情况,并且这些相同的属性我们要给的值也是相同的,正常情况下,需要重复配置多次,spring通过提供abstract=true帮我们解决了这个问题,所以abstract=true其实就是封装属性的一个配置,并不是配置bean的,而配置完毕后,我们真实的bean如果是想要直接使用而不是重复配置一次的话,则可以通过parent=”公共配置的bean名称“的方式来使用。2:实例2.1:定义类1有属性,name,age,hobby:publ
2021-03-02 18:58:51 348
protoc-3.5.0-win32.zip
2024-08-28
protoc-3.0.0-win32.zip
2024-08-27
netassist.zip
2024-08-15
the-probe-plugin-1.0.zip
2024-06-21
map2obj-idea-plugin-1.0.zip
2024-06-18
javaio-appendfile1709014272558.json
2024-02-27
elasticsearch-analysis-ik-7.1.0.zip
2024-02-05
docker-compose (3).zip
2024-01-31
sentinel-降级熔断测试.jmx
2024-01-10
sentinel-链路流控测试.jmx
2024-01-09
sentinel-直接流控测试.jmx
2024-01-08
sentinel-182.zip
2024-01-08
JSONVue-master.zip JSONVue-master.zipJSONVue-master.zipJSONVue-m
2023-12-08
sftp.zipsftp.zipsftp.zip
2023-12-07
MicroSIP-3.19.22.exe
2023-11-07
nacos-server-2.0.0.zip
2023-10-11
Snipaste1.rar
2023-04-06
ingress.raringress.raringress.rar
2023-01-14
kube-scheduler.rar
2023-01-09
kube-controller-manager.rar
2023-01-09
kube-apiserver.rar
2023-01-09
coredns.tar
2023-01-09
redistimeseries.so redistimeseries.so
2022-11-09
redis-3.2.2.gem redis-3.2.2.gem redis-3.2.2.gem
2022-10-20
redis-linux-3.2.0.rar redis-linux-3.2.0.rar
2022-10-20
google-access-helper2022-main.zip
2022-09-23
MyFlash-master.zip
2022-08-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人