概述
有下面几种方法
- 注解(@Service)
- XML方式
- 注解(@Bean)
- factoryBean
- spring 容器api
- 动态向容器注册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第三方对象注入所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复