- 博客(11)
- 资源 (2)
- 收藏
- 关注
原创 手动调用指定Dubbo接口(三)----GenericService篇
我写了个方法,可以给方法传递指定的Dubbo接口名,方法名,参数值,方法来调用我们指定的Dubbo接口,并返回结果。这次用的是Dubbo的GenericService。示例代码:@Controller@RequestMapping("/test")public class TestController { /** * @param interfaceName Dubbo接口名 * @param methodName 方法名 * @para.
2020-06-23 18:40:11
3812
原创 手动调用指定Dubbo接口(二)----Reference篇
我写了个方法,可以给方法传递指定的Dubbo接口名,方法名,参数值,方法来调用我们指定的Dubbo接口,并返回结果。在SpringBoot中使用@Reference注解标识的Dubbo接口,比如:@ReferenceOrderService orderService;这种接口的动态代理没有被放到Spring的上下文中,而是放在了Dubbo的处理类AnnotationBean中。这种情况下使用WebApplicationContext wac = ContextLoader.g.
2020-06-23 18:34:50
3886
1
原创 Dubbo的GenericService简介和基本使用
简介GenericService是Dubbo提供的泛化接口,用来进行泛化调用。GenericService接口只有一个方法:Object $invoke(String var1, String[] var2, Object[] var3) throws GenericException;第一个参数是方法名。第二个参数是一个字符串数组,这是接口方法每个参数类型的全路径。第三个参数是Object数组,是传给方法的具体参数列表。Dubbo服务的提供者和消费者都可以使用这个接...
2020-06-23 18:06:45
9911
原创 Spring中InitializingBean和SmartInitializingSingleton的区别
目录一,InitializingBean简介:二,SmartInitializingSingleton简介三,InitializingBean和SmartInitializingSingleton的区别四,从源码观察InitializingBean和SmartInitializingSingleton调用时机的区别一,InitializingBean简介:InitializingBean的代码:package org.springframework.beans.factory;
2020-06-12 18:06:56
4144
1
原创 MyBatis源码学习(六)——在代码中调用Mapper接口时发生了什么
小结:1,开始,MapperProxy.invoke().2,创建MapperMethod。包括创建SqlCommand,封装sql,创建MethodSignature,封装方法参数。3,MapperMethod.execute()4,区分增删改查,查询时,统一调用DefaultSqlSession.selectList()5,CachingExecutor.query()6,SimpleExecutor.doQuery()。创建StatementHandler,确定statemen
2020-06-10 20:10:26
1319
原创 MyBatis源码学习(五)——MyBatis配置项的加载过程
先上小结:MybatisAutoConfiguration类的@EnableConfigurationProperties({MybatisProperties.class})注解被Spring激活,准备注入MybatisProperties类。 MybatisProperties类有@ConfigurationProperties(prefix="mybatis")注解,会被ConfigurationPropertiesBindingPostProcessor调用bind()方法来处理。 获得My
2020-06-10 18:05:48
1531
原创 MyBatis源码学习(四)——创建Mapper动态代理
先上小结:Spring标准代理创建流程,this.initializeBean()方法。 BeanPostProcessor对Mapper代理实例进行预处理。 执行MapperFactoryBean.afterPropertiesSet(),从MapperFactoryBean.SqlSessionTemplate.SqlSessionFactory.Configuration.MapperRegistry.knownMappers获得之前创建好的工厂代理,如果没有则重新创建一个。 继续Sprin
2020-06-10 17:16:22
1031
原创 MyBatis源码学习(三)——创建SqlSessionFactory实例和Mapper代理工厂
先上小结:开始调用MybatisAutoConfiguration.sqlSessionFactory()方法。 构建SqlSessionFactoryBean类实例。 把数据源实例DataSource赋值给SqlSessionFactoryBean。 创建Configuration实例,赋值给SqlSessionFactoryBean。 读取mybatis配置文件,把mapperLocations参数赋值给SqlSessionFactoryBean。 SqlSessionFactoryBea
2020-06-10 16:45:44
2058
原创 MyBatis源码学习(二)——创建Mapper代理工厂的准备工作
先上小结:@Autowired注解生效。 Spring开始为@Autowired注解的Mapper创建动态代理。使用的是BeanFatory中注册的BeanDefinition。 Spring标准的创建动态代理流程,创建Mapper接口类的BeanWrapper,准备进行属性注入。 准备给Mapper代理注入sqlSessionFactory和sqlSessionTemplate。 Spring标准的创建动态代理流程,创建SqlSessionFactory的代理。使用的是SqlSessionFa
2020-06-10 15:56:32
474
原创 MyBatis源码学习(一)——@MapperScan注解扫描Mapper接口文件,创建BeanDefinition
先上小结:@MapperScan注解生效。触发@Import({MapperScannerRegistrar.class})注解。 @Import({MapperScannerRegistrar.class})注解生效。调用MapperScannerRegistrar.registerBeanDefinitions()。 MapperScannerRegistrar创建扫描工具类Scanner。 Scanner从@MapperScan注解中获取Mapper接口路径。 调用Scanner.doSc
2020-06-10 15:04:49
3104
原创 MyBatis源码学习(零)——准备
当我们使用MyBatis时,往往会有以下操作:1,添加@MapperScan注解,或者在配置文件中使用<mybatis:scan>进行设置。这一步设置的是需要扫描的Mapper文件路径,比如这样:@Configuration@EnableTransactionManagement@MapperScan({"com.macro.mall.mapper","com.macro.mall.dao"})public class MyBatisConfig {}2,编写Mapper.
2020-06-10 14:42:02
287
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人