使用Spring管理Bean(一)

本文详细介绍了控制反转(IoC)和依赖注入(DI)的概念,以及在Spring框架中的实现,包括XML配置、构造器注入和属性注入,以及如何通过Spring管理Bean的生命周期和依赖关系,以及如何处理集合注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、IOC和DI

1、简介

IOC是Inversion Of Control(控制反转)的缩写,它是一种设计思想,是指将对象的控制权由程序代码反转给外部容器。

public class AccountServiceImpl implements IAccountService {
    private IAccountDao accountDao;
    public AccoutServiceImpl( {
        this.accountDao = new AccountDaolmpl(); //在Spring中看不到这条语句[new AccountDaolmpl()]
    }
}

在Spring 中,控制反转是实现Spring容器的指导思想。有了Spring容器,开发人员无需编写管理对象生命周期依赖关系的代码,此项工作将由Spring容器根据配置自动完成,如此一来,对象的控制权由程序代码反转给Spring容器。

DI是Dependency Injection(依赖注入)的缩写,它是控制反转的另一种说法,同时也为控制反转提供了实现方法。依赖注入是指调用类对其他类的依赖关系由容器注入,这就避免了调用类对其他类的过度依赖,降低了类与类之间的耦合。注意,降低类与类之间的耦合度并不是让他们不再依赖,而是使得调用类不依赖具体的某个类的对象。

传统方式中,如果一个类依赖另一个类,则必须在该类中new一个具体依赖类的对象,比如:

public class AccountServiceImpl implements IAccountService {
    private AccountDaoImpl accountDao;
    public AccoutServiceImpl() {
        accountDao = new AccountDaoImpl(); 
    }
}

以上代码中,AccoutDaoImpl是 IAccountDao接口的具体实现类,当需要换接口的另一种实现时,代码需要进行相应改变:

private AccountDaoImpl2 accountDao;
accountDao = new AccountDaoImpl2();

实际开发中类与类之间依赖应该做到:编译期不依赖,运行时才依赖。

编译期依赖如下:

public class AccountServiceImpl implements IAccountService {
    private AccountDaoImpl accountDao;
    public AccoutServiceImpl(){
        this.accountDao = new AccountDaoImpl();
    }
}

运行时依赖如下:

AccoutServiceImpl类定义里,不再依赖具体的IAccountDao接口的实现类。

如果代码中存在多处类对象的创建,当具体实现类改变时相应代码都需要修改。此

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值