av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

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

淺談Spring中IOC的理解和認(rèn)知

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

①mapper層:因?yàn)闆](méi)有連接數(shù)據(jù)庫(kù),這里我們寫(xiě)一個(gè)mapper的實(shí)現(xiàn)類(lèi)來(lái)模擬數(shù)據(jù)的查詢(xún)

public interface PerMapper { void getPerInfo();}

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

②service層:service的作用是查詢(xún)?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的理解和認(rèn)知

1.2、多個(gè)種類(lèi)的查詢(xún)

①mapper,增加老師實(shí)現(xiàn)類(lèi)

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

②這時(shí)候我們同時(shí)查詢(xún)教師和學(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的理解和認(rèn)知

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

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

第二種是擴(kuò)展service層的接口,把老師和學(xué)生分別提供接口來(lái)查詢(xún):

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

⑤看起來(lái)好像沒(méi)啥問(wèn)題是吧?那假如有一百種人呢?需要改來(lái)改去人都會(huì)瘋掉的。這種做法肯定不合理的!

1.3、優(yōu)化查詢(xún)方式

①聰明的孩子可以想到將查詢(xún)的對(duì)象剝離出來(lái):添加 set() 方法,對(duì)接口不實(shí)現(xiàn),只進(jì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層實(shí)現(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é):這種方式就是把主動(dòng)權(quán)交給了調(diào)用者 ,程序不用去管怎么創(chuàng)建,怎么實(shí)現(xiàn)了 .,它只負(fù)責(zé)提供一個(gè)接口 。

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

1.4、IOC本質(zhì)

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

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

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 国产精品成人国产乱一区 | 一区二区美女 | 欧美大片91| 在线黄色网| 国产精品99久久久久久www | 啊v在线 | 天天干少妇 | 亚洲午夜精品一区二区三区 | 一级片欧美 | 日韩在线视频一区 | 手机av在线免费观看 | 亚洲国产欧美在线 | 97视频在线免费观看 | 中文字幕永久 | 一区二区三区在线免费 | 免费网站黄色 | 国产日韩视频 | 久久久久国产一区二区三区 | 国产乱人伦 | 日韩在线精品视频 | 国产乱码精品一品二品 | 91欧美激情一区二区三区成人 | 国产精品毛片一区二区在线看 | 91女人18毛片水多国产 | 欧美成人免费视频 | 国产黄色一级片 | 免费特级毛片 | 免费看成人片 | 日韩高清毛片 | 中文字幕国产视频 | 亚洲一级在线 | www黄色片| 久久三级视频 | 欧美精品综合 | www.国产视频| 天天cao | 国产在线小视频 | 91玖玖| 亚洲区一区二 | 日本在线免费观看视频 | 成年免费视频黄网站在线观看 |