久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

淺談Spring中IOC的理解和認知

瀏覽:25日期:2023-07-18 11:40:09
IOC的推導(dǎo)1.1、模擬一個正常查詢信息的業(yè)務(wù)流程:

①mapper層:因為沒有連接數(shù)據(jù)庫,這里我們寫一個mapper的實現(xiàn)類來模擬數(shù)據(jù)的查詢

public interface PerMapper { void getPerInfo();}

public class StudentMapperImpl implements PerMapper { @Override public void getPerInfo() {System.out.println('我是一個學(xué)生'); }}

②service層:service的作用是查詢?nèi)说男畔?/p>

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

④執(zhí)行結(jié)果如下:

淺談Spring中IOC的理解和認知

1.2、多個種類的查詢

①mapper,增加老師實現(xiàn)類

public class TeacherMapperImpl implements PerMapper { @Override public void getPerInfo() {System.out.println('我是一個老師'); }}

②這時候我們同時查詢教師和學(xué)生的信息該怎么做呢?

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

③執(zhí)行結(jié)果:

淺談Spring中IOC的理解和認知

④如果需求再次變更呢?只需要教師的信息怎么做呢?毋庸置疑:兩種做法,一種是直接更改PersonServiceImpl的getPersonInfo()

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

第二種是擴展service層的接口,把老師和學(xué)生分別提供接口來查詢:

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、優(yōu)化查詢方式

①聰明的孩子可以想到將查詢的對象剝離出來:添加 set() 方法,對接口不實現(xiàn),只進行預(yù)留的工作。

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

②controller層實現(xiàn)方式:

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

③總結(jié):這種方式就是把主動權(quán)交給了調(diào)用者 ,程序不用去管怎么創(chuàng)建,怎么實現(xiàn)了 .,它只負責提供一個接口 。

我們不再去管理對象的創(chuàng)建了 , 更多的去關(guān)注業(yè)務(wù)的實現(xiàn) ,耦合性大大降低 ,這也就是IOC的原型 !

1.4、IOC本質(zhì)

控制反轉(zhuǎn)是一種通過描述(XML或注解)并通過第三方去生產(chǎn)或獲取特定對象的方式。在Spring中實現(xiàn)控制反轉(zhuǎn)的是IOC容器,其實現(xiàn)方法是依賴注入(Dependency Injection,DI)。

以上就是關(guān)于Spring之IOC的理解和認知的詳細內(nèi)容,更多關(guān)于Spring之IOC的理解的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 精品视频 免费 | 久久综合狠狠综合久久综合88 | 国产99久久精品一区二区永久免费 | 日韩91| 欧美一区二区三区精品 | 久久精品国产99精品国产亚洲性色 | 天堂亚洲 | 久久久国产精品入口麻豆 | 人人九九精 | 特级丰满少妇一级aaaa爱毛片 | 国产中文一区 | 成人h视频| 蜜桃av网址 | 在线干 | 91精品国产91久久久久久黑人 | 伊人伊人网| 日韩a视频 | 国产视频一区二区 | 亚洲欧美高清 | 午夜免费福利电影 | 成人毛片视频免费 | 黄色av网站在线免费观看 | jizz在亚洲 | 久久国内免费视频 | 中文字幕久久久 | 国产日韩欧美视频 | 国产精品一区二区三区免费 | 99久久免费视频在线观看 | 精品亚洲永久免费精品 | 免费观看日韩av | 性色爽爱 | 国产精品日本一区二区在线播放 | 中文字幕精品一区 | 国产一区二区三区高清 | 国产色播av在线 | 欧美一区视频 | 久热热热| 玖玖视频在线 | 免费的一级黄色片 | 日韩免费一区 | 精品国产黄a∨片高清在线 日韩一区二 |