千家信息网

Spring中IOC实例分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本文小编为大家详细介绍"Spring中IOC实例分析",内容详细,步骤清晰,细节处理妥当,希望这篇"Spring中IOC实例分析"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧
千家信息网最后更新 2026年11月01日Spring中IOC实例分析

本文小编为大家详细介绍"Spring中IOC实例分析",内容详细,步骤清晰,细节处理妥当,希望这篇"Spring中IOC实例分析"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

IOC的推导

1.1、模拟一个正常查询信息的业务流程:

①mapper层:因为没有连接数据库,这里我们写一个mapper的实现类来模拟数据的查询

public interface PerMapper {    void getPerInfo();}
public class StudentMapperImpl implements PerMapper {    @Override    public void getPerInfo() {        System.out.println("我是一个学生");    }}

②service层:service的作用是查询人的信息

public interface PersonService {    void getPersonInfo();}
public class PersonServiceImpl implements PersonService {    private PerMapper studentMapper = new StudentMapperImpl();    @Override    public void getPersonInfo() {        studentMapper.getPerInfo();    }}

③contorller层

import service.PersonService;import service.impl.PersonServiceImpl;public class IOCTest {    public static void main(String[] args) {        PersonService service = new PersonServiceImpl();        service.getStudentInfo();    }}

1.2、多个种类的查询

①mapper,增加老师实现类

public class TeacherMapperImpl implements PerMapper {    @Override    public void getPerInfo() {        System.out.println("我是一个老师");    }}

②这时候我们同时查询教师和学生的信息该怎么做呢?

public class PersonServiceImpl implements PersonService {    private PerMapper student = new StudentMapperImpl();    private PerMapper teacher = new TeacherMapperImpl();    @Override    public void getPersonInfo() {        student.getPerInfo();        teacher.getPerInfo();    }}

如果需求再次变更呢?只需要教师的信息怎么做呢?
毋庸置疑:两种做法,
一种是直接更改PersonServiceImpl的getPersonInfo()

   @Override    public void getPersonInfo() {//        student.getPerInfo();        teacher.getPerInfo();    }

第二种是扩展service层的接口,把老师和学生分别提供接口来查询:

public interface PersonService {    void getPersonInfo();    void getPersonInfo1();}
    public class PersonServiceImpl implements PersonService {    private PerMapper student = new StudentMapperImpl();    private PerMapper teacher = new TeacherMapperImpl();    @Override    public void getPersonInfo() {        teacher.getPerInfo();    }    @Override    public void getPersonInfo1() {        student.getPerInfo();    }}

⑤看起来好像没啥问题是吧?那假如有一百种人呢?需要改来改去人都会疯掉的。这种做法肯定不合理的!

1.3、优化查询方式

①聪明的孩子可以想到将查询的对象剥离出来:添加 set() 方法,对接口不实现,只进行预留的工作。

public class PersonServiceImpl implements PersonService {    private PerMapper per;    public void setPer(PerMapper per) {        this.per = per;    }    @Override    public void getPersonInfo() {        per.getPerInfo();    }}

②controller层实现方式:

public class IOCTest {    public static void main(String[] args) {        PersonServiceImpl service = new PersonServiceImpl();        //学生        service.setPer(new StudentMapperImpl());        service.getPersonInfo();        //老师        service.setPer(new TeacherMapperImpl());        service.getPersonInfo();    }}

③总结:这种方式就是把主动权交给了调用者 ,程序不用去管怎么创建,怎么实现了 .,它只负责提供一个接口 。

我们不再去管理对象的创建了 , 更多的去关注业务的实现 ,耦合性大大降低 ,这也就是IOC的原型 !

1.4、IOC本质

控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是IOC容器,其实现方法是依赖注入(Dependency Injection,DI)。

读到这里,这篇"Spring中IOC实例分析"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

查询 信息 学生 方式 老师 实例 实例分析 分析 对象 接口 文章 业务 做法 内容 教师 数据 方法 更多 控制 不合理 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技 互联网科技网 湖南永感互联网科技有限公司 互联网核心科技是什么 港股互联网科技股 互联网 的科技创新 互联网科技公司官网 互联网科技视频 太原新华互联网科技学校怎么样 深圳互联网科技怎么样 辽宁互联网新科技 工业互联网等科技实现智能化赋能 爱医互联网络科技 小米互联网科技园入驻 互联网领先科技宣传片 互联网领先科技活动 美国五大互联网科技公司市值多少 互联网科技大会大佬 互联网领先科技成果宣传视频 互联网 科技节活动 微视频大赛 广州淘业互联网络科技 互联网是第几次科技革命的成果 互联网金融公司科技 互联网高科技企业 联恩商钥互联网科技有限公司 元气玛特互联网科技公司是外包吗 互联网营销推广黑科技 半导体行业属于互联网高科技类吗 承德科技产业互联网平台 广东猫王互联网科技有限公司电话
0