讀spring原始碼之—Assert.notNull
* Assert that an object is not <code>null</code> .
* <pre class="code">Assert.notNull(clazz, "The class must not be null");</pre>
* @param object the object to check
* @param message the exception message to use if the assertion fails
* @throws IllegalArgumentException if the object is <code>null</code>
*/
public static void notNull(Object object, String message) {
if (object == null) {
throw new IllegalArgumentException(message);
}
}
相關推薦
讀spring原始碼之—Assert.notNull
/*** Assert that an object is not <code>null</code> .* <pre class="code">Assert.notNull(clazz, "The class must not be null");</pre>
Spring原始碼之設計模式
一.代理模式 分為jdk代理和cglib代理。(前者實現介面,後者生成繼承) 1.兩個參與角色:執行者和被代理人 2.對於被代理人來說,這件事情是一定要完成的,但是自己又不想做或者沒有時間做,找代理。 3.需要獲取到被代理人的資料。 歸納:辦事要求人,所以找代理。 二.工廠模式 分為簡單工廠
Spring原始碼之JdbcTemplate中的坑
我們平常用JdbcTemplate最多的還是query()方法和queryForObject()方法。同樣,其中還有一個使用最多的是BeanPropertyRowMapper。 但是,在JdbcTemplate.queryForObject()中有一個很不起眼的坑,BeanPropertyRow
spring原始碼之初嘗試
從啟動類的run()方法開始debug,一步一步step into開啟spring原始碼之旅,目前還只能看個大概,慢慢來吧,得多咀嚼,細品味。 原始碼中太多的回撥、錯綜複雜的繼承、實現、反射等思想,一口氣想吞下恐怕是有點奢望,來日方長。 下面是別人總結的,我照著debug了一次,
Spring原始碼之ApplicationContext(九)初始化剩餘的單例
這裡所指的剩餘的單例,其實就是非延遲載入單例。在Spring的原始碼中,是通過finishBeanFactoryInitialization的方法來執行的。我們按照慣例,先來看一張時序圖。(相關資源可到這裡下載:http://pan.baidu.com/s/1sjSo9a9
Spring原始碼之JdbcTemplate分析
JdbcTemplate 用過Spring開發的,ORM框架一般選擇MyBatis或者Hibernate,不過,Spring對JDBC API的封裝工具JdbcTemplate,也提供了很方便的操作,不需要再在使用jdbc api時捕獲那麼多受檢異常,忍受那麼
深入理解Spring原始碼之自動裝配
自動裝配; Spring利用依賴注入(DI),完成對IOC容器中中各個元件的依賴關係賦值; 1)、@Autowired:自動注入: 1)、預設優先按照型別去容器中找對應的元件:applicationContext.getBean(Bo
gradle配置,讀spring原始碼時發現spring專案是gradle構建的
工作一直以來都是使用manven構建專案,管理jar包,從我個人狹隘的認知感覺manven真的是一個超級高效的工具,對於gradle我還不太感冒,這個號稱能構建一切的工具,我來裝上 試一試 首先 第一步:百度 下載gradle 安裝包 下載解壓後 就是配置環境變數,
深入理解Spring原始碼之bean的生命週期控制器BeanPostProcessor
spring是藉助ioc容器進行bean的初始化的,ioc的概念如下: bean的生命週期: bean建立---初始化----銷燬的過程 容器管理bean的生命週期; 我們可以自定義初始化和銷燬方法;容器在bean進行到當前生命週期
spring原始碼之 getBean流程圖
spring-getBean方法流程 流程圖 Created with Raphaël 2.1.0呼叫getBean方法(1)(4)(5)(6) (14)end(7)(15)(8)(9) (10)(11)(12)yesnoyesnoyesnoyesn
Spring原始碼之事件驅動模型
SpringContext中初始化事件釋出者 ### //spring初始化事件的地方 //spring初始化事件的地方 public abstract class AbstractApplicationContext extends DefaultResou
Spring原始碼之bean的基本解析
先看這樣一段兒程式碼: spring bean xml配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchem
Spring原始碼之自動裝配
引言 我們使用Spring開發過程中經常會用到Autowired註解注入依賴的bean,這部分也是面試的熱點問題之一。今天咱們一起來深入研究下自動注入的背後實現原理。首先上一個例子,如下所示: @RestController public class TestController { @Autowi
Spring原始碼之事務(一)— TransactionAutoConfiguration自動配置
#### 總結: - 在ConfigurationClassParser#parse()中會對deferredImportSelectorHandler進行處理(在處理@ComponentScan 自己所寫@Component的類後) - 處理過程中會呼叫SpringFactoriesLoader#loadF
Spring原始碼之ApplicationContext
本文是針對Srping的ClassPathXMLApplicationContext來進行原始碼解析,在本篇部落格中將不會講述spring Xml解析註冊程式碼,因為ApplicationContext是BeanFactory的擴充套件版本,ApplicationContext的GetBean和xml解
Spring原始碼之註解掃描Component-scan
本文主要介紹Spring的component-scan標籤,瞭解spring是如何實現掃描註解進行bean的註冊,主要實現實在 NamespaceHandler, NamespaceHandlerSupport 和 BeanDefinitionParser 三個介面中,還需要配置spring.handlers
spring原始碼解析之AOP原理
一、準備工作 在這裡我先簡單記錄下如何實現一個aop: AOP:【動態代理】 指在程式執行期間動態的將某段程式碼切入到指定方法指定位置進行執行的程式設計方式; 1、匯入aop模組;Spring AOP:(spring-aspects) 2、定義一個業務邏輯類(
Spring原始碼窺探之:Spring IOC之BeanPostProcessor
Spring的Bean後置處理器 1. 實體類 /** * @author 70KG * @Title: Train * @Description: * @date 2018/7/23下午11:31 * @From www.nmyswls.com */ public cla
Spring原始碼窺探之:Spring IOC之FactoryBean
1. 定義Fish實體類 /** * @author 70KG * @Title: Fish * @Description: * @date 2018/7/22下午5:00 * @From www.nmyswls.com */ @Data public class Fish
spring原始碼學習之路---IOC容器初始化要義之bean定義載入(四)
上章說到要帶各位去看看bean定義載入的要義,其實就是loadBeanDefinitions這個方法的具體實現步驟,下面我們跟隨這個方法去看下它到底是如何載入bean定義的。 上面是我擷取的實現了loadBeanDefinitions的類級別截圖,loadBeanDefinit