spring
文章平均质量分 78
spring
PromisingGirl-Du
这个作者很懒,什么都没留下…
展开
-
Spring手撸源码系列-实现Aware感知容器对象
tia 此次实现会比较简单,围绕着Aware感知事件的处理,所谓Aware感知通俗说明就是将applicationContext、beanFactory、beanName、beanClassLoader等等的IOC的容器对象传给用户,使用户能够获取该对象并进行使用的操作。那么就要考虑如何传给用户,怎么合理设计,让用户得到容器对象1.工程目录等待上传中2.xml类图2.1.Aware接口定义了Aware接口,这个接口就是标记的,如果任何继承此接口则代表是感知接口,统一判断对象是原创 2022-03-21 17:38:02 · 660 阅读 · 0 评论 -
Spring手撸源码系列-给Bean对象注入属性
上一章是给Bean对象注入构造参数,这一章就来实现给Bean对象注入属性,一般来说类有构造方法也会有全局变量的属性,那么我们在创造的时候就需要注入进来,不能不管,这样才是一个完整的创建对象。对于属性的创建除了基本类型也会有引用类型,引用其他的Bean对象等等都要考虑。1.工程目录标红的是新添加的2.UML类图为什么要添加这些类?马上介绍,首先目前加的三个类都是关于属性方面的,涉及的以前类的更改也是根据需要填充属性而更改的。PropertyValue:定义属性类,这个.原创 2021-11-16 13:05:49 · 800 阅读 · 0 评论 -
Spring手撸源码系列-实现bean单例与多例作用域
这节的话就更简单了,主要实现bean的单例(创建一个对象),多例(可创建多个对象),怎么可以实现如果单例的话第一次存储容器里,第二次获取从容器里获取就可呢,非常非常简单,直接进入代码吧1.首先第一步是需要在BeanDefination里去添加设置Scope的值,等待解析xml的时候通过set注入到BeanDefination对象里就可以在处理时使用了。public class BeanDefinition { // 按上一章的话这里已经把Object改成了Class,这样就可以把bean的原创 2022-04-17 18:35:29 · 803 阅读 · 0 评论 -
Spring手撸源码系列-支持构造函数入参方式的类的实例化
上一章节我们实现了可以对Bean对象进行定义、注册、获取Bean对象的功能,这一章节在此基础上改造可以支持加载类的构造函数以及入参方式来实例化Bean。首先上一章其实在UserService类里添加构造函数然后运行是会报错的。因为创建bean方法时实例化beanDefinition.getBeanClass().newInstance();实例化方式并没有考虑构造函数的入参,所以就会报错public class UserService { private String name;原创 2021-11-13 18:39:59 · 1114 阅读 · 0 评论 -
Spring手撸源码系列-实现Bean对象初始化和销毁方法
这一节比上一节轻松,主要关注的就是可以在操作Bean的过程中去调用用户自定义的初始方法和结束方法,这样用户就可在bean实例化后的时机做自定义初始化的业务逻辑,也可在整个Bean操作完成后进行销毁操作的自定义业务逻辑方法,和上节的自定义修改Bean对象是一个意思就像在xml中配置了init-method以及destroy-method后就会在Bean一系列中去操作对应的方法,所以第一知道要改动的就是需要在bean定义中(BeanDefinition)添加两个属性,initMethodName,destr原创 2022-01-12 13:54:21 · 457 阅读 · 0 评论 -
Spring手撸源码系列-实现应用上下文及前置后置修改Bean操作
咱们要实现两大功能1是实现应用上下文,这个的意思就是说我们在实例化时将配置文件交给上下文类,上下文类会通过内部处理后会解析XML然后将Bean注册并创建出Bean的过程,我们对于使用的话什么都不操作,看看如下的使用入口,是不是更简便了再看看之前的写法,还需要自己实例化,还得找对应的Bean的解析类等等,咱们优化过后,将所有的数据刷新到容器里就都在上下文操作类做了第二个就是可以在Bean解析完后放入Bean定义中时在Bean创建之前修改Bean的信息以及在实例化后对实例Bean进行修改的操作.原创 2022-01-07 09:58:13 · 1038 阅读 · 0 评论 -
Spring手撸源码系列-FactoryBean的实现和使用
这章咱们来实现FactoryBean,是FactoryBean不是BeanFactory啊,话说,是有多敬业多好的产品,有了BeanFactory还想出来了FactoryBean,BeanFactory是将将某个类注册到bean容器工厂里FactoryBean也是一样的功能,唯一不同的是通过实现ioc提供的一个接口,我们系统或者我们自己的类实现此接口,可以做一些自己想要的功能然后返回给IOC容器里的操作首先我们这次要添加两个类,一个是FactoryBean,用来让用户进行实现的接口,第二个是要添原创 2022-04-30 15:42:35 · 885 阅读 · 0 评论 -
Spring手撸源码系列-实现bean定义、注册、获取、单例bean
上一章节的bean定义以及注册获取实现的简单,只有一个类就完成了这些功能,但是不容易扩展以及安全性的问题,这一章节就需要考虑涉及类之间的关联,就会复杂一些。上一章节是自己创建了实例bean传给了容器,这一章节就需要模拟Spring的方式容器创建...原创 2021-11-10 14:23:11 · 708 阅读 · 0 评论 -
Spring手撸系列-实现一个简单的Bean容器
最近空闲时间就跟着大佬的博客学习spring手撸专栏系列,最开始有点怕,因为有尝试过看spring源码,但发现很难看进去(看不懂啊),也有尝试寻找视频但都没有找到我想要的,最后一直关注的博主出了这样一个专栏,设计模式,然后也会有对源码设计模式的实战讲解,发现还不错,然后因为论文就一直在学习设计模式就对设计模式了解了很多以后开始学习它的手敲源码专栏,第一章还好,等到第二章,第三章,错综复杂的类关系是着实绕蒙圈了,但是反复揣摩,手敲,复盘,竟感觉有一点点懂了,所以也想要把自己理解的Spring学习记录下来。原创 2021-11-09 11:34:29 · 406 阅读 · 0 评论 -
Spring手撸源码系列-实现资源加载根据Spring.xml解析和注册Bean
之前的章节都是通过代码注册bean,设置属性等操作,在Spring框架里是采用xml形式定义bean对象,以及设置Bean的属性以及引用关系。就是将以下的标红的框的代码移到xml文件去定义,然后通过加载xml文件,进行解析文件,再进行bean的注册和属性的填充。按上面改造方式,我们需要加载xml的功能,所以就会出现资源加载器,那么我们根据文件的加载,我们要既能支持ClassPath,还有本地file,以及云文件(http)的加载。这是资源加载的操作。其次是解析xml的功能操作,解析完毕调用上几章原创 2021-11-22 18:05:37 · 778 阅读 · 0 评论 -
Spring手撸源码系列-容器事件和事件监听器
Spring中有个event事件,可以提供事件的定义、监听和发布事件操作,此次事件监听发布的实现采用的是观察者模式,需要设计出事件定义,对事件的监听,以及对事件的发布,对事件的发布需要广播器进行处理等等,程序的入口,需要用到之前都一直在用的上下文刷新类AbstractApplicationContext的refresh(),用它初始化事件广播器,并发布一些刷新事件和关闭容器等事件原创 2022-05-13 16:00:20 · 303 阅读 · 0 评论 -
spring注解驱动开发-生命周期-@Bean指定初始化和销毁方法
这回我们用个例子来说说bean的生命周期bean的生命周期就是bean的创建---初始化---销毁的过程容器管理bean的生命周期,可以自定义初始化和销毁方法,容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法我们先来创建实体类Car.Class,定义初始化init方法,打印输出,再定义销毁destroypackage springorgin.demo.configbean;public class Car { public Car() {原创 2021-06-21 17:56:26 · 234 阅读 · 0 评论 -
spring注解驱动开发-组件注册-使用FactoryBean注册组件
之前的一节说明了import的注册的几种方式,接下来来说最后一种注册方式:FactoryBean我们需要实现FactoryBean,然后默认获取到de原创 2021-06-08 18:02:34 · 208 阅读 · 2 评论 -
spring注解驱动开发-组件注册-@Import给容器快速导入组件
我们之前有使用过@Bean注册过,也有使用过包扫描+组件标注注解(@Controller/@Service/@Repository/@Component)的方式,接下来使用@Import的方式首先我们建一个原创 2021-06-04 14:31:54 · 128 阅读 · 0 评论 -
spring注解驱动开发-组件注册-@Conditional按照条件注册bean
如果某些bean注入是根据条件注入,而不是全部注入,我们就可以使用@Conditional注解,比如示例:当windows系统我就注入一个bean为bill的person对象,当为linux操作xi原创 2021-05-31 15:44:27 · 127 阅读 · 1 评论 -
spring注解驱动开发-组件注册-@Lazy懒加载
懒加载:就是不希望容器启动就加载,我是用的时候再加载,那么容器启动就加载完成的应该就是只有单例的情况,所以懒加载是针对单实例bean,因为单实例默认容器启动的时候创建对象,懒加载通过容器启动时不创建对象,第一次使用(获取)bean才创建对象并初始化。比较简单,咱们上代码:package springanntition.lazy;import org.springframework.context.annotation.Bean;import org.springframework.conte原创 2021-05-25 14:42:38 · 150 阅读 · 2 评论 -
spring注解驱动开发-组件注册-@Scope设置组件作用域
1.单例作用域测试1.1 创建MainScopeConfig类,添加@Scope注解,括号里不写任何内容,默认就是单例的,在注入@Bean打印给容器中添加person。。。。。我们看看什么时机进行打印package springanntition.scope;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import原创 2021-05-24 16:09:27 · 145 阅读 · 3 评论 -
spring注解驱动开发-组件注册-@ComponentScan自动扫描&指定扫描组件
1.新建一个类ConfigComponentScan,类上加@ComponentScan(value ="springanntition.configbean");表明要扫描springanntition.configbean包下的类@Configuration@ComponentScan(value ="springanntition.configbean")public class ConfigComponentScan { // @Bean含义:给容器中注册一个Bean;类型为返回原创 2021-05-20 12:34:49 · 511 阅读 · 1 评论 -
spring注解驱动开发-组件注册-@Configuration&@Bean容器注册组件
本文会演示spring.xml的方式注入数据,以及对应的注解会是怎么注册的代码1.首先需要用idea创建maven java project项目点击下一步,填上名字和路径,点击finish。2.我们需要用spring方式注入实体属性测试,所以要建一个Person.classpackage springorgin.demo.configbean;public class Person { private String name; private Integer a原创 2021-05-17 15:20:57 · 93 阅读 · 0 评论 -
Spring图解控制反转(IOC)和依赖注入(DI)
周末在网上逛的时候看到了一篇Spring的视频,翻到了控制反转讲解那一篇发现听后豁然开朗,因为之前学习的时候都是专业术语基本都是背一遍,但是过后就完全不知道啥是啥了,毕竟Spring的发展和生态还是挺让人敬佩的,还是对Spring会有好奇感。那么就把学习的知识记录一下。1.控制反转首先控制反转就是IOC是Spring两大核心之一,其次想知道IOC是什么,需要思考一下两个为什么?...原创 2019-11-25 16:43:59 · 512 阅读 · 0 评论