zhangweiocp
码龄10年
关注
提问 私信
  • 博客:64,592
    64,592
    总访问量
  • 37
    原创
  • 282,462
    排名
  • 53
    粉丝
  • 0
    铁粉
  • 学习成就
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:湖北省
  • 目前就职: 小米
  • 加入CSDN时间: 2014-10-24
博客简介:

zhangweiocp的专栏

查看详细资料
  • 原力等级
    成就
    当前等级
    3
    当前总分
    468
    当月
    0
个人成就
  • 获得89次点赞
  • 内容获得18次评论
  • 获得122次收藏
  • 代码片获得122次分享
创作历程
  • 1篇
    2024年
  • 12篇
    2023年
  • 3篇
    2022年
  • 16篇
    2021年
  • 2篇
    2018年
  • 9篇
    2016年
  • 6篇
    2015年
成就勋章
TA的专栏
  • Spring
    5篇
  • SpringBoot
    4篇
  • 安卓开发
    7篇
  • 回调函数
    4篇
  • 设计模式
    5篇
  • java
    20篇
  • javascript
    1篇
  • MySQL
    2篇
兴趣领域 设置
  • 大数据
    flink
创作活动更多

AI大模型如何赋能电商行业,引领变革?

如何使用AI技术实现购物推荐、会员分类、商品定价等方面的创新应用?如何运用AI技术提高电商平台的销售效率和用户体验呢?欢迎分享您的看法

186人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

JDK和CGLIB动态代理原理

该代理对象的方法会有逻辑上的增强,其一方面会执行增强的逻辑,另一方面其实就是通过反射调用被代理类的方法,这个调用过程跟静态代理就很像了。这里通过实现了JDK的InvocationHandler接口中invoke方法,其实这个类就是JDK动态代理的代理类,后面生成的代理对象就是通过该代理类,来间接调用原始类的方法的。代理对象的方法是如何被增强的呢,其实增加逻辑并不在代理对象中,而是在代理类这个中间者里,代理对象只不过是调用了这个中间者的invoke方法而已;最后就是生成代理对象。
原创
发布博客 2024.02.06 ·
363 阅读 ·
9 点赞 ·
1 评论 ·
3 收藏

Spring IOC - Bean的生命周期之依赖注入

在父子容器进行类型查找:查找类型匹配的 beanNames,beanFactory#beanNamesForType 方法根据类型查找是,先匹配单例实例类型(包括 Spring 托管 Bean),再匹配 BeanDefinition 的类型。其会调用到Spring进行依赖查找的核心API: beanFactory#resolveDependency,其本质是根据类型查找依赖,调用beanFactory#beanNamesForType方法根据类型查找依赖名称。此时只有一个依赖,从容器获取真实的 bean。
原创
发布博客 2023.11.19 ·
590 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Spring IOC - 推断构造方法

首先看下方法的源码及注释如下,下面我们再逐行解析。// 使用适当的实例化策略为指定的bean创建一个新实例:工厂方法、构造函数自动装配或简单实例化// 创建bean的实例,这里也是spring推断构造方法的核心所在// args:表示程序员通过getBean传入的参数,如果使用getBean(Class<?> requireType,Object[] args),那么传入的参数就会传入到这里// 这个参数是用于构造函数或工厂方法调用的显示参数// 获取bean的Class对象Class<?
原创
发布博客 2023.11.17 ·
257 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Spring IOC - Bean的生命周期之实例化

在Spring启动流程文章中讲到,容器的初始化是从refresh方法开始的,其在初始化的过程中会调用finishBeanFactoryInitialization方法。而在该方法中则会调用DefaultListableBeanFactory#preInstantiateSingletons方法,该方法的核心作用是初始化非延迟加载的Bean,且提供了两个扩展点
原创
发布博客 2023.11.13 ·
523 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Spring IOC - BeanDefinition解析

若bean没有父亲,将当前beanDefinition通过克隆或深拷贝方式生成一个新的RootBeanDefinition,并返回;若bean有父亲,将父beanDefinition通过克隆或深拷贝方式生成一个新的RootBeanDefinition,再将子beanDefiniton属性覆盖RootBeanDefiniton的相同信息,并返回该RootBeanDefinition.
原创
发布博客 2023.11.13 ·
124 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Spring IOC - Spring启动过程解析

注册Bean的后置处理器,包括系统内置的和自定义的,如:AutowireAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor。2.AbstractRefreshableApplicationContext:关闭当前beanFactory,创建新的beanFactory,体现了刷新的含义。提前给beanFactory塞入bean实例:如BeanFactory,ResourceLoader等,以及设置类加载器、属性编辑器等。
原创
发布博客 2023.11.04 ·
253 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Spring IOC - ConfigurationClassPostProcessor源码解析

上文提到Spring在Bean扫描过程中,会手动将5个Processor类注册到beanDefinitionMap中,其中ConfigurationClassPostProcessor就是本文将要讲解的内容,该类会在refresh()方法中通过调用invokeBeanFactoryPosstProcessors(beanFactory)被调用。对full模式的配置类BeanDefinition进行CGLib增强:把CGLib生成的子类型设置到beanDefinition中。
原创
发布博客 2023.10.31 ·
1172 阅读 ·
23 点赞 ·
9 评论 ·
22 收藏

Spring IOC - Bean的扫描

Component及其衍生注解:@Configuration、@Controller、@Service、@Repository标记的类,被Spring IOC扫描到后,即可被容器管理起来。其原理基本涵盖在AnnotationConfigApplicationContext构造函数体的三行代码里。
原创
发布博客 2023.07.10 ·
776 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Spring IOC - FactoryBean源码解析

FactoryBean是Spring框架中的一个接口,它允许我们自定义一个工厂类,用于创建和管理Spring容器中的Bean实例。getObject():用于返回一个Bean实例,这个方法可以自定义创建Bean实例的逻辑。getObjectType():用于返回创建的Bean实例的类型。当我们在Spring中自定义一个FactoryBean时,Spring容器会先创建这个FactoryBean实例,然后调用它的getObject()方法来获取实际的Bean实例。
原创
发布博客 2023.06.02 ·
600 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Spring IOC - Bean的初始化

null) {try {else {// 调用afterPropertiesSet方法if (mbd!!!// 调用自定义的init方法。
原创
发布博客 2023.05.19 ·
1091 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Spring IOC 源码解读

BeanDefinition 中的 beanClass(Object) 是以 String 定义,通过 spring 的 ClassUtil.forName 处理成 Class 类型,并通过 ClassLoader 加载。包含属性的读方法引用(readMethodRef,通常是getter),写方法引用(writeMethodRef,通常是setter)等信息。Bean 定义中的 id,name,scope,primary 等统称为 Bean 元信息。此阶段可以对 PropertyValue 做修改。
原创
发布博客 2023.04.28 ·
931 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

spring所有的扩展点

spring扩展点
原创
发布博客 2023.04.26 ·
777 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

线上问题诊断指南

线上问题诊断指南
原创
发布博客 2023.02.21 ·
1099 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

SpringBoot揭密:spring-boot-starter-json介绍

SpringBoot支持三种Json库:Jackson、Gson、JSON-B,Jackson是SpringBoot官方推荐的默认库。SpringBoot分别提供了Jackson、Gson、JSON-B的自动装配:org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration,\org.springframework.boot.autoconfigure.gson.GsonAutoConfiguratio...
原创
发布博客 2022.04.19 ·
3016 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

SpringBoot揭密:spring-boot-starter-logging及源码解析

SpringBoot源码中使用的日志API为JCL(Java common log),JCL实际上只是一个日志门面,没有具体的日志功能实现。如果将SpringBoot中的spring-boot-start-logging依赖排除,可以看到启动项目时打印的是红色字体的JUL日志。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>sprin...
原创
发布博客 2022.04.10 ·
4136 阅读 ·
10 点赞 ·
0 评论 ·
10 收藏

SpringBoot揭密:spring-boot-starter-actuator与应用监控

系统上线后其稳定性是至关重要的,开发者做到对系统运行状态及各种信息了如指掌,才有底气保证系统没有问题,很多开发者连通过运行数据来监控系统状态的意识都没有,系统上线稳定后是否稳定全凭运气和被动接收用户反馈才知道。SpringBoot提供了非常成熟的应用监控模块SpringBoot Actuator,其中Actuator可理解为探测器,通过spring-boot-starter-actuator开箱即用,即可获得通过HTTP或者JMX方式暴露的EndPoint,EndPoin...
原创
发布博客 2022.04.09 ·
2754 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

JAVA泛型理解

一. 术语 泛型:声明中具有一个或者多个类型参数的类或者接口,就是泛型; 原生态类型:每一种泛型都定义一个原生态类型(raw type),即不带任何实际类型参数的泛型名称。例如,与List<E>相对应的原生态类型是List。原生态类型就像从类型声明中删除了所有泛型信息一样,他们的存在主要是为了与泛型出现之前的代码相兼容。二. 理解 从技术的角度来说,像E、List<E>和List<String>这样的类型应称作不可...
原创
发布博客 2021.12.05 ·
291 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

SpringBoot揭密:spring-boot-starter-data-redis

一. POM解析 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.0.0.RELEASE</version> <scope>comp
原创
发布博客 2021.12.04 ·
14871 阅读 ·
7 点赞 ·
0 评论 ·
18 收藏

POM 标签大全详解及依赖管理

一. 标签大全<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd"> <!--父项目的坐标。如果项目中没有规定某个元
原创
发布博客 2021.11.21 ·
991 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

版本名词解释

GA:General Availability,正式发布的版本,官方开始推荐广泛使用,国外有的用GA来表示release版本。RELEASE:正式发布版,官方推荐使用的版本,有的用GA来表示。比如spring。Stable:稳定版,开源软件有的会用stable来表示正式发布的版本。比如Nginx。Final:最终版,也是正式发布版的一种表示方法。比如Hibernate。RC:Release Candidate,发行候选版本,基本不再加入新的功能,主要修复bug。是最终发布成正式版的前一个版本
转载
发布博客 2021.11.09 ·
1941 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏
加载更多