Spring-----如何将一个对象存到容器中(结合mybatis)

如何将一个对象存到Spring容器中?
有几种办法?
mybatis用的是什么方法

我们平时用的@Component注解的作用是将一个类存到Spring容器中,而不是将对象存到Spring容器中。将类放到Spring容器中,由Spring容器帮它变成一个对象(bean)进行存放。
下面我用一幅图可能会好理解一些。
在这里插入图片描述

这一点在我们自己仿写一个Mybatis的时候可以通过JDK动态代理,将一个接口实例化为一个类,再把类放到Spring容器中去。
第一种方法
通过容器的api context.getBeanFactory().registerSingleton

mybatis不是用这种方法,因为需要手动调用api,这种方法一次只能注入一个,另外开发ssm的时候也没有自己去调用api

第二种方法
@Bean
mybatis也不用这种方法,和第一种方法大同小异

第三种方法
FactoryBean
public class CustomFactoryBean implements FactoryBean{}
1.必须实现spring的接口FactoryBean
2.实现两个方法
3.本身是一个bean
4.返回不同于自身的bean
mybatis使用这种方法,实际上前两种现在也不用。

虽然CustomFactoryBean可以把一个对象注册给Spring,但是需要批量注入dao的情况该怎么解决呢?以及如何把CustomFactoryBean交给spring管理,也就是把类交给Spring管理?(mybatis的特殊需求)
@BEAN不行
@Compenent连一个都无法动态
XML不行,无法批量注入dao
答案是beanDefintion

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring 整合 MyBatis 可以通过以下步骤完成: 1. 引入相关依赖:在项目的 pom.xml 文件添加 SpringMyBatis 的依赖,例如: ``` <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.3</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> ``` 2. 配置数据源:在 Spring 的配置文件配置数据源,例如: ``` <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test" /> <property name="username" value="root" /> <property name="password" value="password" /> </bean> ``` 3. 配置 MyBatis:在 Spring 的配置文件配置 MyBatis,例如: ``` <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="typeAliasesPackage" value="com.example.model" /> <property name="mapperLocations" value="classpath:mapper/*.xml" /> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.mapper" /> </bean> ``` 4. 编写 Mapper:创建 Mapper 接口并编写 SQL 语句,例如: ``` public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User findById(Long id); } ``` 5. 注入 Mapper:在 Service 层注入 Mapper 并调用相应方法,例如: ``` @Autowired private UserMapper userMapper; public User findById(Long id) { return userMapper.findById(id); } ``` 完成以上步骤后,SpringMyBatis 就成功整合了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值