Spring-IOC管理Dao层对象
由于dao层只有接口,需要使用sqlsession工厂对象,通过代理获取dao层对象。
使用IOC管理dao层对象需要进行如下步骤:
1、在spring容器中使用org.mybatis.spring.mapper.MapperFactoryBean创建dao接口对象;
2、注入sqlsession配置,即给sqlSessionFactory属性注入数据库信息;
3、给mapperInterface属性指定接口名字;
4、在测试类中加载spring配置文件,通过bean id获取dao层对象;并调用dao层提供方法。
Spring-IOC管理Service层对象
service层有接口和实现类,
service实现类通过mybatis工具类获取sqlsession对象,
使用代理模式获取dao层对象。
1、在spring容器中使用具体的service实现类创建对象;
2、由于service实现类中获取dao层对象使用了被替代的mybatis工具类,
所以在service中提供一个私有dao层接口对象,并提供getter and setter方法;
3、在service实现类的具体方法中删除获取dao层对象的方法,
使用类中提供的dao层对象直接调用方法;
4、在spring容器中给service实现类的属性赋值;
5、在测试类中根据bean-id获取service层对象,调用方法。
升级版:解决多个dao和service的对象创建
spring-IOC管理dao层对象 动态代理
1、在spring容器中使用MapperScannerConfigurer类,查找指定包下的所有接口,动态生成代理对象;不指定id,会生成隐式id(标准对象引用名);
2、在测试类中根据隐式bean-id获取dao层对象,调用方法。
升级版:解决多个dao和service的对象创建
spring-IOC管理service层对象 注解 + 自动装配
由于service层与dao层不同,有具体的实现类,采用注解和自动装配来管理对象。
1、在spring容器中注释(删除)service的bean标签;
2、在spring容器开始位置开始注解扫描;
3、在service实现类前使用@Service,表示service类;
4、在service实现类中使用@Autowired完成对dao对象的赋值;
5、新建SpringJunit测试类,使用注解表示该类是spring提供对单元测试的支持,加载配置文件,在类中添加service层对象属性,并使用自动装配注解完成赋值,在测试方法中调用service的方法。