Spring的作用

Spring通过配置管理实现对象间解耦,例如在更换数据访问技术如从Hibernate到MyBatis时,只需调整配置,无需修改Service层代码。@Primary注解用于在多个实现中指定默认Bean,而@Repository可自定义Bean名称以在特定场景下选择性地获取所需实例。
摘要由CSDN通过智能技术生成

Spring的作用
Spring 的主要作用就是为代码“解耦”,降低代码间的耦合度。就是让对象和对象(模 块和模块)之间关系不是使用代码关联,而是通过配置来说明
例如以下例子
项目结构
在这里插入图片描述
AlphaDaoHibernateAlphaMyBatis均实现AlphaDao接口

场景1
原本项目使用的是Hibernate,现在要求使用MyBatis。那么按照原来的操作,我们需要在service层逐一修改调用了的地方

    @Test
    public void testApplicationContext() {
    	//逐一修改此处
        AlphaDao alphaDao = applicationContext.getBean(AlphaDao.class);
        System.out.println(alphaDao.select());
    }

现在我们仅需要
新建AlphaMyBatis类实现AlphaDao接口,通过配置@Primary注解实现需求
此处便是:就是让对象和对象(模 块和模块)之间关系不是使用代码关联,而是通过配置来说明。

@Repository
//优先装配
@Primary
public class AlphaMyBatis implements AlphaDao{
    @Override
    public String select() {
        return "MyBatis";
    }
}

注意使用@Primary注解@Repository("alphaDaoHibernate")
当有两个类均实现了接口,且在业务中通过接口获取Bean(applicationContext.getBean(AlphaDao.class);)需要指定获取的是哪一个Bean实例化,Bean默认是单例且ID唯一,否则报错。

场景2
在场景1的基础下,将Hibernate替换为MyBatis,但是现在仅有少数一处或几处还是需要使用Hibernate。
现在的处理办法是使用@Repository()注解的属性。

//自定义类的名字
@Repository("alphaDaoHibernate")
public class AlphaDaoHibernate implements AlphaDao{
    @Override
    public String select() {
        return "Hibernate";
    }
}
    @Test
    public void testApplicationContext() {
        AlphaDao alphaDao = applicationContext.getBean(AlphaDao.class);
        System.out.println(alphaDao.select());
        alphaDao = applicationContext.getBean("alphaDaoHibernate",AlphaDao.class);
        System.out.println(alphaDao.select());
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值