我是靠谱客的博主 天真乐曲,最近开发中收集的这篇文章主要介绍spring源码之模拟mybatis第三方对象注入,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

有下面几种方法

  1. 注解(@Service)
  2. XML方式
  3. 注解(@Bean)
  4. factoryBean
  5. spring 容器api
  6. 动态向容器注册beanDefinition

看到这几种方式的时候,需要我们自己思考一下,在注册这个对象之前,是需要自己手动生成的。
那么使用注解Service和XML的方式肯定是不行的,因为这个只是把一个类交给了spring容器管理,并不是生成的对象交给他。所以前两种方式不可行。
第六种方式也是不行的,至于为什么不行,我们到后面再说。

注解(@Bean)

public class BatisConfig {
@Bean
public TMapper getTMapper(){
TMapper tMapper = (TMapper) MySqlSession.getMapper(TMapper.class);
return tMapper;
}
}
@Test
public void customBatis(){
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(BatisConfig.class);
TMapper mapper = context.getBean(TMapper.class);
mapper.queryMap("1");
}
//打印结果
假装连接数据库
假装执行了查询语句select * from t where id = ${id}
假装返回了JSON串

FactoryBean

@Component
public class MyFactoryBean implements FactoryBean {
@Override
public Object getObject() throws Exception {
System.out.println("实例化了Mapper");
TMapper tMapper = (TMapper) MySqlSession.getMapper(TMapper.class);
return tMapper;
}
@Override
public Class<?> getObjectType() {
return TMapper.class;
}
}
@Test
public void customBatis(){
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.scan("com.spring.batis");
context.refresh();
TMapper mapper = context.getBean(TMapper.class);
mapper.queryMap("1");
}
//打印结果
假装连接数据库
假装执行了查询语句select * from t where id = ${id}
假装返回了JSON串

spring 容器api手动注入

	@Test
public void customBatis(){
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
TMapper tMapper = (TMapper) MySqlSession.getMapper(TMapper.class);
context.getBeanFactory().registerSingleton("t", tMapper);
context.refresh();
TMapper mapper = context.getBean(TMapper.class);
mapper.queryMap("1");
}
//打印结果
假装连接数据库
假装执行了查询语句select * from t where id = ${id}
假装返回了JSON串

最后

以上就是天真乐曲为你收集整理的spring源码之模拟mybatis第三方对象注入的全部内容,希望文章能够帮你解决spring源码之模拟mybatis第三方对象注入所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部