spring 控制反转IoC

本文围绕Java中的IoC控制反转展开,介绍其是面向对象编程中降低代码耦合度的设计原则,常用方法有依赖注入和依赖查找。还分析了其实现过程,包括编写Dao、UserService接口及实现类,通过增加实现类测试,并展示了IoC方式的实现与测试。

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

IoC 控制反转

控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。常用的方法有“依赖注入”,“依赖查找”。

分析实现

  1. 先写一个Dao接口
public interface UserDao {
    void getUser();
}
  1. 再去写Dao的实现类
public class UserDaoImpl implements UserDao{
    @Override
    public void getUser() {
        System.out.println("默认获取用户的数据");
    }
}
  1. 然后去写UserService的接口
public interface UserService {
    void getUser();
}
  1. 最后实现service的实现类
	UserDao userDao = new UserDaoImpl();
    @Override
    public void getUser() {
        userDao.getUser();
    }
  1. 测试一下
    @Test
    public void userTest() {
        UserServiceImpl userService = new UserServiceImpl();
        userService.getUser();
    }

上面是原来的方式,下面通过增加实现类测试

  1. 增加一个Dao的实现类
public class UserDaoMysqlImpl implements UserDao{
    @Override
    public void getUser() {
        System.out.println("Mysql获取用户数据!!!!");
    }
}
  1. 变更service的实现类
	UserDao userDao = new UserDaoMysqlImpl();
    @Override
    public void getUser() {
        userDao.getUser();
    }

接下来通过IoC的方式

  1. 变更service的实现类
public class UserServiceImpl implements UserService{
    private UserDao userDao;

    //利用set进行动态实现值的注入
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    @Override
    public void getUser() {
        userDao.getUser();
    }
}
  1. 测试
   //控制反转IoC的测试
    @Test
    public void iocTest() {
        UserService userService = new UserServiceImpl();

        ((UserServiceImpl)userService).setUserDao(new UserDaoImpl());
        userService.getUser();

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值