1. 程式人生 > >Spring原始碼分析(一)——AOP、DI、IOC和IOC容器原理

Spring原始碼分析(一)——AOP、DI、IOC和IOC容器原理

面向切面程式設計(Aspect Oriented Programming):面向切面程式設計也可以稱為面向規則程式設計,其目的是為了將多個類中具有一定規律性的程式碼在開發時將其按一定規則拆分後各自獨立編寫,在執行時由Spring將其整合在一起形成整體以對外提供服務。最大的好處當然是解耦,使得專人做專事,便於程式碼的維護和可擴充套件性。

面向物件程式設計(Object Oriented Programming):面向切面程式設計是java語言的定位,封裝、繼承和多型自然在java語言中可以靈活的運用。萬事萬物皆物件,即生活中的一切事物都可以用物件來描述,這便是面向物件的核心。可以把生活中的一切行為和屬性都使用方法和變數來描述。

面向Bean程式設計(Bean Oriented Programing):面向Bean程式設計是Spring一直在使用的程式設計思想,Bean是Spring的描述方式。一切都是基於Bean開始。

IOC(Inversion Of Control):控制權反轉,即控制權轉移,將本來需要我們new的物件交由Spring來管理,並由Spring中的IOC容器來儲存和管理。

DI(Dependency Injection):依賴注入就是為了將我們所切分開的獨立的程式碼整合到一起,即理清關係然後賦值,而它所注入的物件是由IOC容器統一存放。Spring不僅儲存了所有建立的物件,並且還儲存了物件與物件之間的引用,以便於正確的注入。賦值的方式有三種,構造器、setter和直接賦值。

IOC容器:IOC容器是Spring所維護的資料結構,是由ConcurrentHashMap來存放的,其中儲存了Spring管理物件的所有資訊。

相關推薦

Spring原始碼分析——AOPDIIOCIOC容器原理

面向切面程式設計(Aspect Oriented Programming):面向切面程式設計也可以稱為面向規則程式設計,其目的是為了將多個類中具有一定規律性的程式碼在開發時將其按一定規則拆分後各自獨立編

spring事務管理原始碼分析配置事務增強代理的生成流程

在本篇文章中,將會介紹如何在spring中進行事務管理,之後對其內部原理進行分析。主要涉及 @EnableTransactionManagement註解為我們做了什麼? 為什麼標註了@Transactional註解的方法就可以具有事務的特性,保持了資料的ACID特性?spring到底是如何具有這樣

Spring component-scan原始碼分析

在XML中配置component-scan通常如下 <context:component-scan base-package="xxx"> <context:exclude-filter type="annotation" expressio

SpringIOC原始碼分析spring ioc 容器的載入流程

轉載自:https://blog.csdn.net/a724888/article/details/72716632 一:spring ioc 容器的載入流程 1.目標:熟練使用spring,並分析其原始碼,瞭解其中的思想。這篇主要介紹spring ioc 容器的載入2.前提條件:會使用de

spring boot 2.0 原始碼分析

在學習spring boot 2.0原始碼之前,我們先利用spring initializr快速地建立一個基本的簡單的示例: 1.先從建立示例中的main函式開始讀起: package com.example; import org.springfra

Executor執行框架原始碼分析——executorthreadFactoryThreadPoolExecutor Future元件的關係及作用

       executor執行框架是JDK1.5新增的,用於專注於任務執行的框架。其最大的特點就是將任務的建立和任務的執行分離,鬆耦合,已達到最大限度的利用計算機資源(執行緒和記憶體等)。在併發程式設計中,executor是一個必備的工具。     在分析原始碼之前,首先

Flume NG原始碼分析基於靜態properties檔案的配置模組

日誌收集是網際網路公司的一個重要服務,Flume NG是Apache的頂級專案,是分散式日誌收集服務的一個開源實現,具有良好的擴充套件性,與其他很多開源元件可以無縫整合。搜了一圈發現介紹Flume NG的文章有不少,但是深入分析Flume NG原始碼的卻沒有。準備寫一個系列分析一下Flume NG的

GCC原始碼分析——介紹與安裝

原文連結:http://blog.csdn.net/sonicling/article/details/6702031     上半年一直在做有關GCC和LD的專案,到現在還沒做完。最近幾天程式設計的那臺電腦壞了,所以趁此間隙寫一點相關的分析和

Spring原始碼解析十三——AOP原理——AnnotationAwareAspectJAutoProxyCreator註冊

 * 2、 AnnotationAwareAspectJAutoProxyCreator:  *         AnnotationAwareAspectJAutoProxyCreator &nbs

Spring原始碼解析——元件註冊1

一、@Configuration&@Bean給容器中註冊元件 public class Person { private String name; private Integer age; public Person() { } public

Glide原始碼分析從用法來看之with方法

繼續啃原始碼,用過Glide的人,肯定都覺得它好好用,我們一般只需要幾行程式碼,就可以達到我們想要的效果,可以在這個背後是什麼呢?就需要我們來看了。 我一般看原始碼,我喜歡先從用法來看,然後一步一步的再細扣,所以就先從用法來看Glide的整體流程。 用過Glide的人,用下面這段

zigbee 之ZStack-2.5.1a原始碼分析

先看main, 在檔案Zmain.c裡面 main osal_init_system(); osalInitTasks(); ... ... SampleApp_Init( taskID ); // 使用者定義的任務

Docker Client原始碼分析

主要內容: Docker Client在Docker中的定位,以及Docker Client原始碼的初步分析。 本文選取Docker拆分為DockerCE(社群版)和DockerEE(企業版)之後的Docker-CE的第一個穩定版本v17.06.0-ce。 https://github.com/docker

Hibernate使用及原始碼分析

Hibernate使用及原始碼分析(一) 本篇文章主要通過hibernate初級使用分析一下原始碼,只是給初學者一點小小的建議,不喜勿噴,謝謝! hibernate環境搭建 簡單使用 原始碼走讀 一 hibernate環境搭建 這裡直接

SpringCloud原始碼分析--客戶端搭建

一、前言 上一節的註冊中心搭建完成了,本節開始搭建客戶端,其實對於springcloud的Eureka註冊中心而言,他本身就是服務端也是客戶端,我們上節待見服務端註冊中心的時候,已經通過配置來設定其不向自己註冊,和不去檢索服務的功能,保持了其作為服務註冊中心的相對的功能單一性。 二、pom檔案

Vue原始碼分析:入口檔案

Vue原始碼分析(一):入口檔案   首先開啟命令列,從github下載原始碼,下載到自己的工作目錄。 git clone https://github.com/vuejs/vue.git   這裡我下載的是2.5.17版本的,vue 原始碼是由各種模組用 rollup 工具

okhttp原始碼分析——基本流程超詳細

1.okhttp原始碼分析(一)——基本流程(超詳細) 2.okhttp原始碼分析(二)——RetryAndFollowUpInterceptor過濾器 3.okhttp原始碼分析(三)——CacheInterceptor過濾器 4.okhttp原始碼分析(四)——Conn

Spring原始碼分析IoC容器的實現1

    Ioc(Inversion of Control)——“控制反轉”,不是什麼技術,而是一種設計思想。在Java開發中,Ioc意味著將你設計好的物件交給容器控制,而不是傳統的在你的物件內部直接控制。理解好Ioc的關鍵是要明確“誰控制誰,控制什麼,為何是反轉(有

Android系統播放器MediaPlayer原始碼分析

前言 對於MediaPlayer播放器的原始碼分析內容相對來說比較多,會從Java->JNI->C/C++慢慢分析,後面會慢慢更新。另外,部落格只作為自己學習記錄的一種方式,對於其他的不過多的評論。 MediaPlayerDemo public class MainA

Android7.1 [Camera] Camera Hal 原始碼分析

原始碼平臺:rk3399   命令列ls看下原始碼的結構 hardware/rockchip/camera/CameraHal: lib目錄 原始碼的檔案看起來有點多,我們看看Android.mk檔案, 這些檔案最終編譯成camera.rk30bo