<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
用一句簡單的話來概括Spring:Spring是包含了眾多工具方法的IoC容器。那麼問題來了,什麼是容器,什麼是IOC容器?下面就一起來看看吧
容器就是用來榮南某種物品的裝置,前面我們也是學了很多容器的,類似於List/Map就是一個儲存資料的容器,Tomcat就是一個儲存Web專案的容器。
IOC(inversion of Control)翻譯成中文就是“控制反轉”的意思,這具體是什麼意思呢?通過一個例子來解釋一下:
public class NewCarExample { public static void main(String[] args) { Car car = new Car(); car.init(); } /** * 汽⻋物件 */ static class Car { public void init() { // 依賴⻋身 Framework framework = new Framework(); framework.init(); } } /** * ⻋身類 */ static class Framework { public void init() { // 依賴底盤 Bottom bottom = new Bottom(); bottom.init(); } } /** * 底盤類 */ static class Bottom { public void init() { // 依賴輪胎 Tire tire = new Tire(); tire.init(); } } /** * 輪胎類 */ static class Tire { // 尺⼨ private int size = 30; public void init() { System.out.println("輪胎尺⼨:" + size); } } }
此時就構建出來一輛“汽車”,此時認為只要列印出來了輪胎的尺寸就表示構建成功了:
但是如果需求如果發生了變化,不再自己給定汽車的輪胎尺寸,而是根據使用者的需求來進行變化,此時就會發現要改的程式碼不僅僅只是一個引數
public class NewCarUpdateExample { public static void main(String[] args) { //使用者自己給定尺寸 Car car = new Car(50); car.run(); } /** * 汽⻋物件 */ static class Car { private Framework framework; public Car(int size) { framework = new Framework(size); } public void run() { // 依賴⻋身 framework.init(); } } /** * ⻋身類 */ static class Framework { private Bottom bottom; public Framework(int size) { bottom = new Bottom(size); } public void init() { // 依賴底盤 bottom.init(); } } /** * 底盤類 */ static class Bottom { private Tire tire; public Bottom(int size) { tire = new Tire(size); } public void init() { // 依賴輪胎 tire.init(); } } /** * 輪胎類 */ static class Tire { // 尺⼨ private int size; public Tire(int size) { this.size = size; } public void init() { System.out.println("輪胎尺⼨:" + size); } } }
這才僅僅是改變了一個輪胎尺寸,如果需求再需要加顏色、花紋、logo呢?那就會更加麻煩,這些都是當底層發生改變的時候,要修改的是整個調⽤鏈上的所有程式碼,那麼為什麼會出現這樣的問題呢?
分析可知,這些類都是互相依賴的,耦合性非常強,那麼該如何解耦呢?IoC就可以解決這樣的問題,將控制權反轉出去,不再自己掌控,而是將控制權交給IoC管理,只有自己使用的使用才呼叫
public class IocCarExample { public static void main(String[] args) { Tire tire = new Tire(20); Bottom bottom = new Bottom(tire); Framework framework = new Framework(bottom); Car car = new Car(framework); car.run(); } static class Car { private Framework framework; public Car(Framework framework) { this.framework = framework; } public void run() { framework.init(); } } static class Framework { private Bottom bottom; public Framework(Bottom bottom) { this.bottom = bottom; } public void init() { bottom.init(); } } static class Bottom { private Tire tire; public Bottom(Tire tire) { this.tire = tire; } public void init() { tire.init(); } } static class Tire { private int size; public Tire(int size) { this.size = size; } public void init() { System.out.println("輪胎:" + size); } } }
此時就不在類裡面進行控制了,而是隻有在需要使用的時候,才去傳入而是不是自己控制
再需要改動的時候的話,就只需要改最底層的,而不是改變整個控制鏈!
因此使用IOC最大的優點就是實現了程式碼的解耦;物件(Bean)生命週期交給IOC框架來維護,就不需要再關注物件的建立了!
通過上面的對IoC的認識,就可以得知Spring IoC容器最核心的功能了:
說到IoC就不得不提起DI(Dependency Injection)了,翻譯過來就是依賴注入的意思,那具體代表什麼呢?所謂依賴注⼊,其實就是在 IoC 容器運⾏期間,動態地將某種依賴關係注⼊到物件之中,其實DI和IoC是從不同的⻆度的描述的同⼀件事情,而IoC其實是一種思想,而DI是具體的落地實現,思想就指導了具體的落地實現!
IoC和DI的區別:IoC是一種思想,DI是一種實現(類似於樂觀鎖和CAS);
第一次介紹到這就結束了,主要還是先來認識一下Spring到底是什麼,後面我會再介紹其具體使用和方法的!
到此這篇關於Spring零基礎到進階之鴻蒙開篇的文章就介紹到這了,更多相關Spring 基礎內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45