![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java笔记——spring framework相关
ww0peo
这个作者很懒,什么都没留下…
展开
-
Spring中向集合中注入指定的bean(@Qualifier)
在《在bean中注入同一接口多个实现类的bean》中已经介绍了如何注入多个实现的bean,但是我们无法指定注入某些实现的bean,这里就会介绍如何注入指定的某些bean。完成上面的功能需要借助@Qualifier注解,还需要我们创建一个自定义注解,首先说一说我们需要达到的效果,存在如下一个接口和它的三个实现public interface Test { public void te...原创 2020-03-17 14:12:04 · 2134 阅读 · 0 评论 -
2019.12.5笔记——Spring中监听器的使用与分析、模拟实现监听器和配置线程池
spring中的监听事件自定义的事件事件发布监听器自己实现一个监听器和事件spring是如何实现的从spring工厂中找到所有监听器1.实现ApplicationEvent接口的类2.带有@EventListener注解的ApplicationEventMulticaster 事件驱动器如果在spring中设置了线程池会异步触发监听器的事件这样监听器的逻辑出错也...原创 2019-12-12 11:01:53 · 981 阅读 · 0 评论 -
2019.12.3笔记——与spring的整合方式和spring boot的自动配置
将其他项目整合进spring这样只需要加上一个注解就可以控制是否整合springboot自动配置springmvcspringboot自动配置spriongmvc参数springboot可以直接通过@Bean的方式配置springmvc的配置转换器...原创 2019-12-12 10:59:45 · 181 阅读 · 0 评论 -
spring笔记⑬——spring事务
事务的四个特征CRID数据库隔离级别READ UNCOMMITTEDREAD CONMMITTEDREPEATABLE READSERIAIZABLE查询数据库隔离级别select @@global.tx_isolation各种场景spring事务spring的事务传播特性编程式事务声明式事务@Transactional 加在方法上指定事务的传播特性@EnableT...原创 2019-12-07 12:49:50 · 153 阅读 · 0 评论 -
BeanFactory和FactoryBean的区别
beanfactory和factorybean的区别beanfactory是spring配置工厂类的父接口//注解的配置类BeanFactory beanFactory = new AnnotationConfigApplicationContext();//xml文件的配置类BeanFactory beanFactory1 = new ClassPathXmlApplicationCo...原创 2019-12-07 12:47:58 · 127 阅读 · 0 评论 -
spring中单个属性注入的控制(InstantiationAwareBeanPostProcessor)
单个属性注入的控制简单应用假设存在下面三个bean@Componentpublic class A { }@Componentpublic class B { @Autowired private A a; public void test(){ System.out.println("-------------------");...原创 2019-11-26 19:49:13 · 243 阅读 · 0 评论 -
2019.11.12笔记——合并BeanDefinition
在扫描的时候完成的bd合并,在扫描的时候调用了三次getBeanNamesForType方法,这个方法的本意是通过类型找到对应的bd的名字,但是我们不能直接从bd的map中去找,在找之前需要合并bd,这样可以避免漏找,所以在找之前会见bd合并,并把合并的bd放到一个map中去。在扫描的过程中调用了三次getBeanNamesForType方法,对所有可能的bd完成了合并将合并的bd放到me...原创 2019-11-15 12:02:17 · 808 阅读 · 1 评论 -
Spring中bean的构造方法选择(源码级别)
spring中bean的构造方法选择在spring源码中是在createBeanInstance方法中完成的bean实例化构造方法的选择的,调用链如下方法的源码如下protected BeanWrapper createBeanInstance(String beanName, RootBeanDefinition mbd, @Nullable Object[] args) { // M...原创 2019-11-11 20:05:27 · 1736 阅读 · 0 评论 -
在bean中注入同一接口多个实现类的bean
如果一个接口存在多个实现类,而且多个实现类都被注入到spring容器中了,如果需要将它们都注入到同一个bean中或者想要动态获取某一个bean的时候会发现一些问题,首先是如果只是单独注册一个bean而且还是按照"ByType"注册的,那么还出现异常。这个时候如果一定要将多个bean都注入在一个bean中注入同一个接口的多个实现类的方法,大体思路有两种,一种是通过map将多个bean都统一注入到b...原创 2019-11-04 21:58:15 · 4308 阅读 · 0 评论 -
2019.10.27笔记——@Configuration的底层实现
@Configuration的底层实现cglibpublic Class<?> enhance(Class<?> configClass, @Nullable ClassLoader classLoader) { //判断是否被代理过 if (EnhancedConfiguration.class.isAssignableFrom(configClass)) {...原创 2019-10-29 20:20:51 · 406 阅读 · 0 评论 -
2019.10.17笔记——BeanDefinition的分析
BeanDefinition有很多实现类其中还有一个抽象类AbstractBeanDefinition,这个抽象类相当于所有BeanDefinition的模板类,其之类基本包括全部的BeanDefinition实现类,其中GenericBeanDefinition可以描述现在版本的所有BeanDefinition,它的子类分别表示不同的类型的BeanDefinitionAbstractBean...原创 2019-10-27 11:40:06 · 238 阅读 · 0 评论 -
2019.10.15笔记——spring源码编译缓慢和BeanDefinition分析
这里是spring5.1源码的编译BeanDefinition在spring容器中扮演一个很重要的角色,spring之于bean就相当于java之于对象,那么spring之于BeanDefinition就相当于java之于class在BeanDefinition中的属性都有与之对应的xml配置属性AttributeAccessor 扩展属性 setAttribute方法添加扩展属性Ab...原创 2019-10-27 11:39:45 · 992 阅读 · 0 评论 -
2019.10.22笔记——spring扫描分析之invokeBeanFactoryPostProcessors解析(BeanFactoryPostProcessor和BeanDefinition)
后置处理器BeanDefinitionRegistryPostProcessorBeanFactoryPostProcessorsspring内部回调原创 2019-10-25 20:39:41 · 574 阅读 · 0 评论 -
spring笔记⑦——spring源码
spring中的BeanDefinition相当于java中的对象的class类属于描述spring的bean的对象,可以得到bean的属性bean的类型注解的beanxml的baen@bean定义的beanspring内部的bean可以通过AnnotationConfigApplicationContext直接注册一个类(不需要注解)bdh存着bd和beanname,只是过度作用...原创 2019-10-24 10:56:46 · 116 阅读 · 0 评论 -
spring笔记⑧——spring源码
ImportSelectordefault原创 2019-10-24 10:55:25 · 87 阅读 · 0 评论 -
spring笔记⑪——@Import和@Configuration的底层实现
几种使用者注册到bean工厂的类register方法注册的类普遍类,扫描出来的加了@component之类的类selectImports返回的类ImportBeanDefinitionRegistrar@Configuration的作用如果有这个注解spirng对于这个类会使用cglib进行代理这样在这个类中使用@Bean进行类的注入时这个方法会被代理并被拦截保证了注入的bean的...原创 2019-10-22 22:03:30 · 832 阅读 · 1 评论 -
spring中FactoryMethod的使用和简单分析
FactoryMethod顾名思义就是工厂方法的意思,如果配置了工厂方法,那么spring就会通过这个工厂方法去实例化bean。在xml配置文件中可以配置FactoryMethod,如果配置了FactoryMethod,在初始化bean对象的时候会直接调用FactoryMethod方法来实例化beanpublic class RealDao { public void test(){ ...原创 2019-10-22 18:54:23 · 1411 阅读 · 3 评论 -
spring笔记⑮——bean初始化(实例化)详解
springIOC容器宏观上是spring的整个环境微观上来看就是一个map,存放着bean的名字和对应的bean对象在xml配置文件中可以配置FactoryMethod,如果配置了FactoryMethod,在初始化bean对象的时候会直接调用FactoryMethod方法来实例化bean在配置类中@Bean注解的方法如果是static修饰的,那么这种bean的实例化就是通过Factor...原创 2019-10-21 14:46:49 · 581 阅读 · 0 评论 -
spring笔记⑨——简单模拟mybatis的注解实现
import注解可加以下三种类普通类(需要注入的类)ImportSelectImportBeanDefinitionRegistrar原创 2019-10-17 23:19:51 · 327 阅读 · 0 评论 -
java框架复习——spring framework(待后续更新)
概述Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开...原创 2019-10-16 18:50:06 · 315 阅读 · 0 评论 -
spring笔记②——springIOC
spring bean声明周期回调一共三种方式第一种bean初始化的回调,实现下面的接口bean销毁的回调,实现下面的接口第二种xml,可以自定义函数第三种注解,同样可以自定义函数如果同一个接口有两个实现,如果用了@AutoWired注解注入的,因为这个注解默认按type注入的,那么会报错,解决办法有在需要注入的实现上加注解@Primary在注入时加注解@Qualifi...原创 2019-09-17 23:12:42 · 104 阅读 · 0 评论 -
spring的扩展点总结
zzzz原创 2019-09-17 23:13:59 · 1208 阅读 · 2 评论 -
spring笔记⑤——模拟springIOC之模拟xml配置
自定义异常原创 2019-09-22 22:25:44 · 110 阅读 · 0 评论 -
spring笔记⑥——模拟springIOC之模拟注解配置
zzzz原创 2019-09-22 22:25:56 · 122 阅读 · 0 评论 -
ImportSelector使用——spring容器bean的注入
zzzz原创 2019-09-22 22:26:17 · 1110 阅读 · 0 评论 -
日志与spring5新日志体系笔记(包换mybatis日志)
常见的日志如下log4jjuljclslf4jjul是jdk提供的jcl是通过其他日志实现打印日志的,如果存在log4j就会借助log4j打印日志,如果没有log4j就会借助jul打印日志jcl底层通过classForname的方法加载对应的日志对象jcl会把一些日志的对象的类全名存储在一个数组中,一个一个加载直到得到日志对象所以jcl本身是不提供日志打印的,而是通过第三方的日志...原创 2019-09-22 22:26:48 · 200 阅读 · 0 评论 -
mybatis的缓存(和spring整合)
mybatis如果已经和spring整合了,mybatis的一级缓存就会失效因为spring会自动关闭session所以一级缓存比较鸡肋通常会使用二级缓存在mapper上加@CacheNamespace如果查询和修改一个表中数据的方法不在一个mapper类中但是如果在修改前查询并且在修改后查询时会发现查询出来的数据没有被修改,但是实际上数据库中的数据已经被修改了但是如果查询和修改一...原创 2019-09-22 22:28:01 · 754 阅读 · 0 评论 -
spring的自动装配(NO模式)
spring的自动装配永远都是开启的,只是默认模式是no罢了spring的自动装配从来都不是在需要注入的地方加上注解,这一点可以从基于xml的方式注入来看出,只需要设置default-autowire属性就够了,默认是no模式下面是4种模式的官方解释如果是使用非xml方式来配置spring那么就无法设置这个自动装配的模式了,这样就默认是no模式,于是spring提供了注解的方式协助自...原创 2019-09-22 23:58:21 · 578 阅读 · 0 评论 -
spring选择bean初始化构造器的简单分析(源码层面)——存在问题
因为要通过源码分析,这里就要追踪到createBeanInstance方法带注释的源码如下,如果想要了解如何执行到这里的,请看下面的流程解析bean初始化(实例化)详解protected BeanWrapper createBeanInstance(String beanName, RootBeanDefinition mbd, @Nullable Object[] args) { // ...原创 2019-09-23 16:48:06 · 1052 阅读 · 0 评论 -
spring的循环依赖分析
假设有如下两个bean对象互相依赖@Componentpublic class TestA { @Autowired private TestB testB;}@Componentpublic class TestB { @Autowired private TestA testA;}先解决循环依赖必须知道当一个bean初始化创建出来后到底做了什么,至于bean是如何初始...原创 2019-09-28 12:01:54 · 339 阅读 · 0 评论