Spring的两大特性就是IOC和AOP. IOC Container,控制反转容器,通过读取配置文件或注解,将对象封装成Bean存入IOC容器待用,程序需要时再从容器中取,实现控制权由程序员向程序的转变. 一.代码结构 二.注解扫描 1.新建OrderService.UserService.Test类用于模拟实际开发 @Component("orderService") @Scope("prototype") public class OrderService i…
手写SpringIOCXML版本 /** * 手写Spring专题 XML方式注入bean * * * */ public class ClassPathXmlApplicationContext { // xml路径地址 private String xmlPath; public ClassPathXmlApplicationContext(String xmlPath) { this.xmlPath = xmlPath; } public Object getBean(String bea…
bean的生命周期:创建---初始化---销毁. Spring中声明的Bean的初始化和销毁方法有3种方式: @Bean的注解的initMethod.DestroyMethod属性 bean实现InitializingBean.DisposableBean接口 @PostConstruct.@PreDestroy注解 BeanPostProcessor(这种仅仅增强了Bean的初始化方法) @Bean的注解的initMethod.DestroyMethod属性 --cat类 public cla…
一. 前言 Spring容器主要分为两类BeanFactory和ApplicationContext,后者是基于前者的功能扩展,也就是一个基础容器和一个高级容器的区别.本篇就以BeanFactory基础容器接口的默认实现类XmlBeanFactory启动流程分析来入门Spring源码的学习. 二. 概念要点 1. 概念定义 BeanDefinition:Bean元数据描述,Bean在Spring IOC容器中的抽象,是Spring的一个核心概念 DefaultListableBeanFactor…
在Spring中如果某个bean在初始化之后,或销毁之前要做一些额外操作可以为该bean配置初始化和销毁的我方法,在这些方法中完成需要的功能. 实验: 通过断点调试模式,测试初始化方法和销毁方法的执行 package cn.tedu.beans; public class ProdDao { public ProdDao() { System.out.println("ProdDao 被创建..."); } public void init() { System.out.println…
IoC Ioc 是一款 spring ioc 核心功能简化实现版本,便于学习和理解原理. 创作目的 使用 spring 很长时间,对于 spring 使用非常频繁,实际上对于源码一直没有静下心来学习过. 但是 spring 源码存在一个问题,那就是过于抽象,导致学习起来成本上升. 所以本项目由渐入深,只实现 spring 的核心功能,便于自己和他人学习 spring 的核心原理. spring 的核心 Spring 的核心就是 spring-beans,后面的一切 spring-boot,spr…
Spring 源码学习过程: 一.搞明白IOC能做什么,是怎么做的  1. 搞明白IOC能做什么? IOC是用为用户创建.管理实例对象的.用户需要实例对象时只需要向IOC容器获取就行了,不用自己去创建,从而达到与具体类解耦.  2. IOC是怎么做到的,即它的实现步骤是怎么样的? 2.1 用户配置bean定义 我们使用Spring IOC时有几种方式来配置bean定义呢? xml的方式: <bean id="abean" class="com.study.spring.…
手写SpringMVC思路 1.web.xml加载  为了读取web.xml中的配置,我们用到ServletConfig这个类,它代表当前Servlet在web.xml中的配置信息.通过web.xml中加载我们自己写的MyDispatcherServlet和读取配置文件. 2.初始化阶段   在前面我们提到DispatcherServlet的initStrategies方法会初始化9大组件,但是这里将实现一些SpringMVC的最基本的组件而不是全部,按顺序包括: 加载配置文件 扫描用户配置包下…
参考源 https://www.bilibili.com/video/BV1tR4y1F75R?spm_id_from=333.337.search-card.all.click https://www.bilibili.com/video/BV12Z4y197MU?spm_id_from=333.999.0.0 <Spring源码深度解析(第2版)> 版本 本文章基于 Spring 5.3.15 项目地址 https://gitee.com/liao-hang/hand-write-spri…
再我们现在项目中Spring框架是目前各大公司必不可少的技术,而大家都知道去怎么使用Spring ,但是有很多人都不知道SpringIoc底层是如何工作的,而一个开发人员知道他的源码,底层工作原理,对于我们对项目的理解是有非常大的帮助的,有可能工作了两三年的中级工程师,乃至四五年的,只知其然,却不知其所以然.我的一个盆友,今年年初以实习生的身份去北京面试 ,面试官让我的朋友说Spring源码,作为一个实习生,就要去知道Spring的源码.虽然我们可以不用知道,也可以做项目,但他会成为我们面试结果…