
spring
文章平均质量分 89
秃头披风侠.
因为热爱
展开
-
【spring】注入bean的8种方式
我们可以让一个类实现FactoryBean,这个接口有一个getObject方法,如果一个使用@Bean标记的方法返回FactoryBean,那么最终返回的是FactoryBean的getObject方法返回的值。二者用法基本一样,只不过@Configuration可以控制注入的Bean是不是一个代理对象,如果是代理对象,那么调用@Bean方法返回的都是同一个对象,否则就不是同一个对象。这时返回Cat已经是一个代理对象了,bigCat返回的都是同一个对象,就是单例模式的。原创 2023-04-06 16:18:41 · 8380 阅读 · 0 评论 -
[手写spring](5)实现AOP机制(完结)
我们实现和原生spring相类似的AOP机制,即通过在切面类中的方法上面通过注解指定要切入的位置。当然,使用方法肯定也要和原生的一样,实现主要的功能。自定义JoinPoint定义存储切面类的集合定义MethodInfo内部类解析切面表达式判断是否为目标方法初始化aspectClass容器对切面类进行排序实现AOP测试原创 2022-07-01 00:45:31 · 758 阅读 · 0 评论 -
[手写spring](4)实现后置处理器
后置处理器算是实现AOP的前提,我们在这篇文章中就将会实现后置处理器,后置处理器是什么我就不介绍了,不清楚可以参考后置处理器,下面直接开始。自定义接口执行bean的初始化方法创建后置处理器名称Set初始化后置处理器名称集合执行后置处理器方法执行所有postProcessBeforeInitialization方法执行所有postProcessAfterInitialization方法调用初始化方法、后置处原创 2022-07-01 00:45:06 · 729 阅读 · 0 评论 -
[手写spring](3)初始化singletonObjects,实现依赖注入
在这篇文章中会实现几个相对复杂的功能,包括依赖注入,getBean方法,构建单例对象池。这篇文章内容应该会比较多,难度也较大,但咬牙拿下,对理解spring又会上一个新台阶,下面就直接开始吧创建singletonObjects实现singletonObjects的初始化实现createBean方法解决singletonObjects的依赖注入实现getBean方法测试原创 2022-07-01 00:44:43 · 770 阅读 · 0 评论 -
[手写spring](2)初始化BeanDefinitionMap
我们现在的目标就是像原生spring那样,将扫描到的bean封装成为一个BeanDefinition,然后将其放入BeanDefitionMap中。这里还有一个单例和多例的问题,原本准备放到下一篇文章说明,想了一下,就在这篇文章解决了。自定义BeanDefinition类创建BeanDefinitionMap容器初始化BeanDefinitionMap容器创建printBeanDefinitionMap方法测试原创 2022-07-01 00:44:17 · 740 阅读 · 0 评论 -
[手写spring](1)构建框架,实现包扫描
目录基本说明基本思路框架搭建自定义注解创建路径配置类搭建ApplicationContext容器定义config成员属性获取包扫描,得到目标bean测试总结 为了加强自己对于spring的认识,决定看下spring源码,但是看完还是有点模糊,于是就决定自己来写一个简易的spring,实现IOC,AOP的基本功能。 手写spring准备分5篇文章进行说明,代码总计1000多行,里面的各种注解,容器,全部都是自定义的。在写完之后确实对spring有了一个清晰的认识!!!原创 2022-06-30 12:49:25 · 816 阅读 · 0 评论 -
[spring学习]13、声明式事务(@Transaction)
我们可以使用spring来很容易的事务进行管理,包括事务传播机制,隔离级别,超时等待等等。只需要使用注解配置即可,十分方便。注意,使用前提是在spring配置文件中开启了事务管理的功能。 我们需要在spring配置文件中配置以下内容事务控制 如果我们的方法里面要对数据库进行操作,包含了多条语句,那么我们只需要加一个@Transcation注解即可,加在方法上,那么这个方法就是一个事务了,底层使用的就是AOP。事务传播机制 PROPAGATIO原创 2022-06-28 00:09:58 · 487 阅读 · 0 评论 -
[spring学习]12、JdbcTemplate常见增删改查操作
JdbcTemplate是spring提供的用来操作数据库的一个类,功能十分强大,我们只需传入一个DataSource便可以进行各种crud操作。 要使用JdbcTemplate第一步就是要先引入相应的jar包,由于要操作数据库,也要引入连接数据库的jar包,还有就是数据库连接池技术的包,下面我用的是c3p0。 前缀为spring的包都在spring的那个文件夹中,直接复制过来即可。 在src下面创建一个properties配置文件,将数据库的配置信息写入该配置文原创 2022-06-25 15:36:16 · 2124 阅读 · 0 评论 -
[spring学习]10、AOP思想提出
在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 上面这个是百度百科的介绍,如果是第一次接触,那肯定是看不懂的,应为aop颠覆了传统的oop的原创 2022-06-19 18:15:44 · 466 阅读 · 0 评论 -
[spring学习]11、AOP使用,注解&xml配置
在这一篇文章中,将会介绍AOP的基本使用,以及注解配置和xml配置。在使用spring首先需要进行导入相应的jar包,如下 创建一个Calculate接口,然后创建一个该接口的实现类,如下注解配置 在上一篇文章中说明了横切关注点,在aop中也是对这几个横切关注点进行切入的,如下在aop中与这几个位置想对应的就是几个注解 我们对方法进行切面编程,只需要写一个方法,然后在方法上面加上相应的注解,然后在注解里面指定要进行切入的方法即可。下面是一个简单原创 2022-06-21 12:26:20 · 773 阅读 · 0 评论 -
[spring学习]9、泛型依赖注入
为了更好的管理有继承关系或者相互依赖的bean的自动装配,spring提供了基于泛型依赖的注入机制。当我们的继承关系非常复杂的时候,泛型依赖注入会体现出很大的优越性。 下面就是泛型依赖注入的大致关系图所有的Dao类都继承BaseDao,而Service则是继承BaseService,通过指定泛型,实现自动注入 泛型依赖注入就是为了更好的管理多个有继承关系关系之间的bean,利用泛型依赖注入可以对代码进行精简原创 2022-06-18 00:41:09 · 1467 阅读 · 0 评论 -
[spring学习]8、@Autowired和@Resource的区别
@Autowired和@Resource的区别@Autowired不能指定id进行注入,要指定id进行注入还要使用@Qualifier进行配合才行。而@Resource可以通过name指定id@Autowired的注入顺序是先byType,再byName。@Resource不指定name和type,那么就是先byName,再byType@Autowired支持泛型依赖注入@Autowired官方已经不再推荐使用,建议使用@Resource...原创 2022-06-16 13:00:56 · 1949 阅读 · 0 评论 -
[spring学习]7、手写spring注解扫描机制
在这一篇文章中,我们将会手动实现一个和spring包扫描类似的功能,这里先说明一下这篇文章中要使用到的一些核心技术,主要用到了注解、I/O、反射。 在这篇文章中,我们自己手动实现了spring基于包扫描创建bean的机制,虽然不是很完善,但是核心功能都已经实现了,相信在自己手动实现之后,对spring又有了更深的认识。这里只是简单实现了下,在后面介绍完AOP之后,将会手动实现一个相对完善的spring,解开spring的神秘面纱,深入理解spring......原创 2022-06-14 16:37:58 · 682 阅读 · 2 评论 -
[spring学习]6、基于注解配置bean
在这篇文章中,将会使用注解的方式类配置bean,注解相对于xml配置,更加的简洁,个人比较喜欢使用注解,现在的主流也是注解配置,下面就来介绍下常见的配置吧 在使用注解配置之前,要在前面的jar包的基础之上额外添加一个jar包,如下 这里先来介绍一下基本的几个注解我们使用上面的注解表示类之后,spring在进行包扫描时,就会讲这些类加入到spring容器之中进行管理。(注意:上面的几个注解都是逻辑意义上的,并没有实际意义,他们的功能在现在都是一样,并不是我们加了Controller原创 2022-06-12 18:04:32 · 857 阅读 · 0 评论 -
[spring学习]5、bean的后置处理器(BeanPostProcessor)
在这篇文章中,将会介绍bean的后置处理器,由于这个涉及到AOP的思想,这里不进行过多的深入,也就是不讲原理(后面文章会手写源码),这里只介绍后置处理器如何使用。 在spring中,后置处理器会在bean初始化化之前和初始化之后进行调用,做相应的处理,我们可以在后置处理器中对bean进行统一的管理和操作 我们要使用后置处理器,首先需要实现BeanPoatProcessor这个接口,下面我们创建一个类来实现这个接口。 参数介绍使用 创建好之后要进行配置才能生效,这原创 2022-06-10 10:43:52 · 2978 阅读 · 0 评论 -
[spring学习]4、bean的生命周期及其他说明
在这篇文章中,将会介绍bean的生命周期以及bean配置时的一些细节说明 bean的生命周期分为以下5步其中第三步和第五步都需要我们手动配置 在spring中有单例模式和多例模式 我们通过下面的配置项来对模式进行指定 如果scope为singleton,那么就是单例模式,为prototype,那么就是多例模式 ......原创 2022-06-10 10:43:02 · 419 阅读 · 0 评论 -
[spring学习]3、基于xml配置bean的常见方式
在这篇文章中,讲解了一些基于xml配置bean的常用方式,当然,方式还有很多,这里只说明了一些,上面的只有配置,就单纯看的化肯定会有点模糊,大家可以自己创建一个测试类来对每种配置进行测试。篇幅有限,其他的配置方法在下一篇文章中进行说明。............原创 2022-06-08 16:19:38 · 5632 阅读 · 0 评论 -
[spring学习]2、spring基本使用及源码分析
目录spring的配置及使用spring的配置spring的使用执行流程的解释spring执行源码分析基本说明源码分析xml文件中的配置信息存放位置单例对象池细节说明总结spring的配置及使用 下面来对如何使用spring来获取bean进行讲解spring的配置在上一篇文章中,我们导入包之后就能够进行使用,要使用spring,我们需要建一个基于spring的xml文件。在idea中右键src,然后点击new-&g...原创 2022-05-16 10:24:34 · 587 阅读 · 1 评论 -
[spring学习] 1、spring下载与使用
目录spring介绍spring核心部分spring的下载idea使用spring总结spring介绍Spring是Java EE编程领域的一个轻量级开源框架,该框架由一个叫Rod Johnson的程序员在 2002 年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,实现敏捷开发的应用型框架 。Spring是一个开源容器框架,它集成各类型的工具,通过核心的Beanfactory实现了底层的类的实例化和生命周期的管理。在整个框架中,各类型的功能被抽象成一...原创 2022-05-10 19:27:48 · 2087 阅读 · 0 评论