自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spring循环依赖流程图

流程图能更好的看到循环依赖的全过程,还有一些面试相关的细节在我的这篇文章里https://blog.csdn.net/weixin_43795033/article/details/109222100

2020-11-25 16:48:29 408

原创 spring中bean的创建过程(doCreateBean方法)

bean的创建过程大部分是在docreateBean里面完成的(为什么这么说?因为在createBean里如果InstantiationAwareBeanPostProcessor的postProcessBeforeInstantiation方法返回了一个bean实例的话createBean方法会直接返回导致不会进入doCreateBean方法,这里插一嘴,一个bean一般情况下被创建的方法调用链:getBean→doGetBean→getSingleton→createBean→doCreateBean)

2020-11-25 09:38:49 845

原创 spring自定义扫描机制原理以及实现思路

//todo

2020-11-18 20:22:11 727

原创 spring自定义扫描实现

业务需求:自定义一个注解@MyMapping使当spring启动的时候自动扫描到环境中所有加了@MyMapping注解的Controller的方法的url路径,并注册一个拦截器或者过滤器去拦截/忽略这些动态匹配到的路由。首先定义注解@MyMapping@Documented@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface MyMapping { String val

2020-11-18 20:20:36 619

原创 spring的bean生命周期之循环依赖的全过程

说明:因为贴代码会让文章变的繁杂,为了更连续的说明,代码就不贴出来了,可以根据下面的入口方法看着笔记去了解这个过程AbstractBeanFactory{public Object getBean(String name) throws BeansException { return this.doGetBean(name, (Class)null, (Object[])null, false);}}---------------------------------.

2020-10-22 15:00:55 377

原创 Nacos动态刷新List/数组类型、复杂类对象配置的两种方式

nacos配置动态刷新复杂类对象、List/数组对象。

2022-08-11 14:57:09 9108 4

原创 LockSurport中park()、unpark()和Thread中interrupt()的区别与联系

park()、unpark()简单说明:LockSurport中park()执行时会判断当前线程是否有"许可"(初始化的线程没有"许可"),若没有"许可"则会阻塞(阻塞期间获得"许可"会跳出阻塞且不抛出InterruptedExcetion异常),若有"许可"则会直接跳过阻塞(不抛出InterruptedExcetion异常)执行后续代码。LockSurport中unpark(Thread thread)执行时会给thread一个"许可",多次执行也只有一个"许可"。需注意的点:1. 许可消

2021-09-25 10:31:58 836 6

原创 Thread中interrupt()、interrupted()、isInterrupted()方法区别与介绍

interrupt()方法会将线程中断标识设置为true;interrupted()会返回当前线程中断标识并且把线程中断标识设置成false;isInterrupted()只是返回当前线程中断标识,不做其他操作;Thread.sleep()、Object.wait()等方法再进入时会判断当前线程中断标识是否为false,若为false则会阻塞,且阻塞结束后会将中断标识置位false。若为true则直接跳过并且将中断标识设置为false。两个例子说明:...

2021-09-24 17:30:47 300

原创 spring启动方法refresh()简单注释

public abstract class AbstractApplicationContext extends DefaultResourceLoader implements ConfigurableApplicationContext { @Override public void refresh() throws BeansException, IllegalStateException { synchronized (t.

2020-10-22 14:49:31 321 2

原创 关于spring中@Import注解的用法

@Import(Class[] value)可以将value的类上的注解引入到使用@Import的类中。-----若@Import(Object.class)中的Object实现了ImportBeanDefinitionRegistrar接口,不管有没有实现接口方法,这个Object对象上的注解都不会带到使用@Import注解的类中。(ImportBeanDefinitionRegistrar有两个重载接口方法,同时实现两个时只会执行三个入参的方法,此方法作为spring注册beanDefiniti.

2020-10-22 14:46:01 342 2

原创 关于@Autowire注解ByName匹配的name是哪个name的问题

传送门:https://mp.csdn.net/console/editor/html/107980120

2020-08-13 15:36:02 1141

原创 spring中bean的name与什么有关

详情见另一篇文章https://mp.csdn.net/console/editor/html/107980120

2020-08-13 15:34:16 998

原创 spring使用@Autowire存在两个同类型bean的时候如何注入以及在spring中bean的名称与什么有关

先上结论:当容器中的bean为单例时,@Autowire为ByType的方式注入,被注入的成员的名称可以任意取名。当容器中的bean存在多个的情况下,@Autowire为ByName的方式注入,ByName是将bean单例池中的key(bean的名字)与被注入的成员变量的名称匹配,而不是与被注入的成员变量的类型匹配。关于单例池中的key(bean的name)与什么有关:如果在类上面加上bean化注解(@service、@controller、@component、@repository.

2020-08-13 15:25:25 7613 6

原创 关于PageHelper的动态代理是向sql注入limit字段还是代理java层的问题

结论:pagehelper是动态代理mybatis的底层拼接sql,而不是从java层处理数据。验证过程:将如下配置加入application.yml文件中,目的是在控制台打印sqlmybatis: mapper-locations: classpath:mapper/*Mapper.xml ##打印sql configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl#showSql.

2020-08-10 11:33:04 770

原创 java中静态代码块、普通代码块、静态声明、成员变量声明、构造方法间的执行顺序

public class Test { public static void main(String[] args) { TestA a = new TestA(); }}class TestA { public TestA() { System.out.println("TestA的构造方法"); } { System.out.println("TestA的非静态代码块"); } stat.

2020-08-06 12:42:57 293

空空如也

空空如也

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

TA关注的人

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