国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Spring(一):IOC如何推導和理解

瀏覽:3日期:2023-07-04 13:26:35
目錄IOC的推導1.1、模擬一個正常查詢信息的業務流程:1.2、多個種類的查詢1.3、優化查詢方式1.4、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(); }}

④執行結果如下:

Spring(一):IOC如何推導和理解

image

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(); }}

③執行結果:

Spring(一):IOC如何推導和理解

image

④如果需求再次變更呢?只需要教師的信息怎么做呢? 毋庸置疑:兩種做法, 一種是直接更改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
相關文章:
主站蜘蛛池模板: 久久精品中文字幕有码日本 | 亚洲片在线观看 | 国产在线综合一区二区三区 | 色综合久久久久久久 | 国产亚洲一区二区三区不卡 | 国产精品视频免费一区二区三区 | 亚洲精品国产高清不卡在线 | 玖玖精品在线观看 | 99视频有精品 | 99在线在线视频免费视频观看 | 亚洲人成毛片线播放 | 欧美一级日韩一级 | 亚洲男人天堂手机版 | 成人黄色在线观看 | 天天激情站 | 三级网站在线 | 亚洲一级毛片欧美一级说乱 | 亚洲精品一区二区三区第四页 | 亚洲午夜国产精品 | 国产高清精品一区 | 久久精品男人的天堂 | 1a级毛片免费观看 | 日本美女高清在线观看免费 | 国产午夜免费不卡精品理论片 | 亚洲精品一区二区观看 | 亚洲午夜精品 | 国产一级做a爰片久久毛片男 | www.欧美成 | 国产一级毛片免 | 男女猛烈无遮掩免费视频 | 精品国产欧美一区二区三区成人 | 日韩性黄色一级 | 亚洲精品国产经典一区二区 | 欧美三级黄色大片 | 日本亚州在线播放精品 | 中国国产一级毛片视频 | 美女视频黄a视频美女大全 美女视频黄a视频免费全程 | 欧美日本高清视频在线观看 | 视频一区色眯眯视频在线 | 中文字幕一区二区三区精彩视频 | 免费国产99久久久香蕉 |