Spring
文章平均质量分 80
Spring
Fisher3652
这个作者很懒,什么都没留下…
展开
-
Spring 基于注解的AOP 获取方法中指定参数
目录1. 创建注解类DoSomeThing2. 创建解析器ElParser3. 创建切面类AspectAnnotation4. 创建实体类User5. 创建service6. 创建controller7. 测试获取方法入参1. 创建注解类DoSomeThingpackage com.example.demo.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import原创 2021-08-07 16:40:31 · 3194 阅读 · 0 评论 -
通过AOP实现动态数据源切换
目录1. 自定义注解2. 创建DynamicDataSourceHolder类,存在数据源名称3. 创建DynamicDataSource类,获取数据源名称4. 创建切面类AspectDs,拦截自定义的注解5. 创建数据源配置类DataSourceConfiguration6. 在方法上添加@TargetSource1. 自定义注解默认值ds1,即默认数据源是ds1import java.lang.annotation.*;@Target({ElementType.METHOD})@Rete原创 2020-10-13 16:25:00 · 547 阅读 · 0 评论 -
Spring源码分析 6:事务
事务Spring事务定义数据源定义事务管理平台注解开启事务1. ProxyTransactionManagementConfiguration2. TransactionInterceptor3. ReflectiveMethodInvocation#proceed()4. TransactionAspectSupport#invokeWithinTransaction(Method method, @Nullable Class<?> targetClass,final InvocationC原创 2020-10-12 22:48:01 · 212 阅读 · 0 评论 -
Spring 配置事务管理器
事务管理器方式一1. 实现TransactionManagementConfigurer接口2. 源码分析方式二1. @Bean2. 源码分析方式一1. 实现TransactionManagementConfigurer接口重写annotationDrivenTransactionManager()方法。返回一个事务管理器import org.springframework.beans.factory.annotation.Autowired;import org.springframewor原创 2020-10-11 18:00:16 · 1635 阅读 · 0 评论 -
Spring源码分析 5:AOP
AOP原创 2020-10-07 17:25:15 · 305 阅读 · 0 评论 -
Spring 基于注解的AOP
AOP基于注解的使用方法1. pom.xml2. 开启注解AOP3. 添加一个切面和Around方法4. 设置自定义标签扫描路径5. 创建service类6. 测试类7. 查看打印8. 断点看userService对象基于注解的使用方法1. pom.xml<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit<原创 2020-10-06 12:02:42 · 284 阅读 · 0 评论 -
Spring 自定义Scope
自定义Scope1. 创建一个实现Scope接口的类2. 创建一个实现BeanFactoryPostProcessor接口的类3. 创建一个Scope类型的类4. 测试方法5. 源码分析1. 创建一个实现Scope接口的类实现同一线程使用同一个bean,不同线程创建新的beanpackage org.example.scope;import org.springframework.beans.factory.ObjectFactory;import org.springframework.原创 2020-10-05 20:44:51 · 1335 阅读 · 0 评论 -
Spring:FactoryBean
FactoryBean1. 代码示例2. FactoryBean的作用3. 原理分析1. 代码示例FactoryClass.javaFactoryBeanDemo实现FactoryBean接口测试方法2. FactoryBean的作用在实例化和 IOC/DI 做完后,spring会调用 FactoryBean 类型的接口,返回一个你自己创建的bean交给spring管理,不影响FactoryBeanDemo这个bean(FactoryBeanDemo在一级缓存,Factory原创 2020-10-05 19:27:20 · 166 阅读 · 0 评论 -
Spring源码分析 4:循环依赖
循环依赖1. 代码示例2. 核心代码2.1 AbstractBeanFactory#doGetBean()2.2 DefaultSingletonBeanRegistry#getSingleton(String beanName)2.3 回到2.1步,DefaultSingletonBeanRegistry#getSingleton(String beanName, ObjectFactory<?> singletonFactory)2.4 AbstractAutowireCapableBean原创 2020-10-05 18:33:57 · 288 阅读 · 2 评论 -
Spring 依赖注入失效
这里写目录标题1. 版本2. 创建InstantiationAwareBeanPostProcessor接口的实现类3. 测试4. 代码分析1. 版本<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.3.RELEASE</version>原创 2020-10-04 22:01:09 · 260 阅读 · 0 评论 -
Spring源码分析 3:bean的实例化
bean的实例化核心方法AbstractApplicationContext#refresh()1. invokeBeanFactoryPostProcessors(beanFactory);1.1 AbstractApplicationContext#invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory beanFactory)1.2 PostProcessorRegistrationDelegate#invokeBeanFacto原创 2020-10-04 21:00:36 · 330 阅读 · 2 评论 -
Spring 实现自定义标签
自定义标签1. 创建spring.schemas文件2. 创建mytags.xsd文件3. spring.xml添加自定义标签4. 创建实体类TagTag5. 创建处理类TagParser6. 映射标签和处理类7. 创建spring.handlers文件8. 测试方法1. 创建spring.schemas文件-在resources文件夹下创建META-INF目录,创建文件spring.schemas,建立xsd文件映射关系http\://www.csdn.com/schema/mytags.xsd=原创 2020-10-04 11:49:01 · 251 阅读 · 0 评论 -
Spring 实现自定义注解
自定义注解1. 创建一个自定义注解MyService2. 创建一个类实现BeanDefinitionRegistryPostProcessor接口3. 创建一个实体,添加注解@MyService4. 测试方法CustomAnno1. 创建一个自定义注解MyServicepackage org.example.annotation;import java.lang.annotation.*;@Target({ElementType.TYPE})@Retention(RetentionPolic原创 2020-10-03 22:28:54 · 1257 阅读 · 1 评论 -
Spring源码分析 2:BeanDefinition
文章目录1. BeanDefinition2. ChildBeanDefinition3. GenericBeanDefinition4. RootBeanDefinition5. GenericBeanDefinition 创建实例6. BeanDefinition 中的属性1. BeanDefinitionBeanDefinition在spring中贯穿始终,spring要根据BeanDefinition对象来实例化bean,只有把解析的标签,扫描的注解类封装成BeanDefinition对象,s原创 2020-10-03 22:16:28 · 182 阅读 · 0 评论 -
Spring源码分析 1:配置文件解析
Springspring项目搭建1. 导入jar依赖2. XSD引入3. spring 容器加载方式源码精读1. 容器加载核心方法2. 测试类3. xml解析3.1 核心方法`AbstractApplicationContext#refresh()`3.2 obtainFreshBeanFactory()3.3 AbstractRefreshableApplicationContext#refreshBeanFactory()3.3.1 AbstractXmlApplicationContext#loadB原创 2020-10-03 21:41:33 · 388 阅读 · 0 评论