随笔分类 - spring源码
1
摘要:spring 整合mybatis和OpenFeign时,都是通过接口来实现的,如: @Repository public interface OrderMapper { int deleteByPrimaryKey(Long codId); } @FeignClient("coupon") publ
阅读全文
摘要:1.bean的生命周期:Class-》推断构造器-》实例化-》属性赋值-》初始化-》aop-》bean 2. 单例bean和单例模式的区别:单例模式只会有一个实例对象,单例Bean可以有多个实例对象,但一个beanName只能对应一个实例对象 3.@Autowried注解:先byType-》在byN
阅读全文
摘要:springcloud的注册中心都会跟ribbon进行整合进行负载均衡,既然要进行负载均衡,那么就需要进行服务列表的发现,而ribbon为了让每个注册中心进行整合,提供了一个抽象类:AbstractServerList 可以参考我的ribbon源码分析:Ribbon源码分析(二)-- 服务列表的获取
阅读全文
摘要:一.背景:spring提供了@Async异步注解,使得方法的调用可以异步的进行,下面代码提供简单的演示: @Configuration @EnableAsync @ComponentScan("com.yang.xiao.hui.aop") public class App { public sta
阅读全文
摘要:一背景:先看如下代码,然后思考问题 @Service public class MyService { public void doTest(){ this.doTest2(); } @Transactional public void doTest2(){ this.doTest3(); } @T
阅读全文
摘要:一.最原始的使用jdbc连接mysql: maven依赖只要一个: <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.45</version> </depe
阅读全文
摘要:.测试项目,随便一个简单的springboot项目即可: 直接debug调试: 可见,分2步,第一步是创建SpringApplication对象,第二步是调用run方法: 1.SpringApplication对象的创建过程: public SpringApplication(ResourceLoa
阅读全文
摘要:1.测试代码,一个简单的springboot web项目:地址:https://gitee.com/yangxioahui/demo_mybatis.git 一:tomcat的主要架构:1.如果我们下载了tomcat的安装包,可以在解压后的文件夹看到server.xml文件: 内容如下: <?xml
阅读全文
摘要:之前的博客专门分析了一个类到BeanDefinition的创建过程,现在分析BeanDefinition 到一个bean的创建过程:从refresh() 方法的 >finishBeanFactoryInitialization(beanFactory) 开始: protected void fini
阅读全文
摘要:背景: 在spring ioc refresh()方法中,看到了如下逻辑: 要理解该逻辑的原理,先看场景:有个接口InterFaceA,它有2个实现类A1和A2 那么,如果一个类C 依赖了InterFaceA,此时sprig不知道要注入哪个实现类: public interface InterFac
阅读全文
摘要:测试环境代码: @Configuration @ComponentScan("com.yang.xiao.hui.ioc") @Conditional(MyCondition.class) public class App { public static void main( String[] ar
阅读全文
摘要:一.测试环境的搭建: public class Apple { } @Component public class MyComponet { } public class MyCondition implements Condition { @Override public boolean matc
阅读全文
摘要:在上一篇aop源码分析时,我们已经分析了一个bean被代理的详细过程,参考:https://www.cnblogs.com/yangxiaohui227/p/13266014.html 本次主要是分析目标方法的执行过程: 测试代码在git : https://gitee.com/yangxioahu
阅读全文
摘要:测试项目已上传到码云,可以下载:https://gitee.com/yangxioahui/aopdemo.git 具体如下: public interface Calc { Integer add(int num1,int num2); }//目标是对add 方法进行切入 @Component p
阅读全文
摘要:测试环境搭建: 本次搭建是基于springboot来实现的,代码在码云的链接:https://gitee.com/yangxioahui/thymeleaf.git DispatcherServlet核心流程在上一篇源码分析已经做了详细讲解 了,参考: https://www.cnblogs.com
阅读全文
摘要:测试环境搭建: 本次搭建是基于springboot来实现的,代码在码云的链接:https://gitee.com/yangxioahui/thymeleaf.git 项目结构代码如下: 一: controller的三种实现方式: 1. 第一种是大家非常熟悉的,使用@Controller和@Reque
阅读全文
摘要:一. servlet 3.0 的使用 1.1 环境搭建: servlet跟spring没有任何关系,我创建一个servlet可以不依赖spring,现在搭建一个纯的servlet项目,并实现简单的类似springMVC的功能: 引入依赖: <dependency> <groupId>javax.se
阅读全文
摘要:1.测试环境搭建: 1.1 架构图: product服务提供一个接口: order服务通过feign的方式来调用product的接口: order服务需要引入依赖: <dependency> <groupId>org.springframework.cloud</groupId> <artifact
阅读全文
摘要:ConfigurationClassBeanDefinition 是ConfigurationClassBeanDefinitionReader的静态内部类
阅读全文
摘要:1.先看如下demo: B和A相互循环依赖 @Component public class B { @Autowired private A a; } @Component public class A { @Autowired private B b; } 启动项目:结果没有报错: 2. 加入异步
阅读全文
1