原创 mybatis與spring整合之MapperScannerConfigurer

//實現了BeanDefinitionRegistryPostProcessor和InitializingBean接口//所以首先會調用//判空掃描的包public void afterPropertiesSet() throws Exc

原创 spring之BeanNameAware

//BeanNameAware該接口主要用於獲取自身在spring中的名稱public interface BeanNameAware extends Aware { void setBeanName(String name);}//其實

原创 讀Objects源碼

//該類是一個工具類,主要封裝了對對象的equals,hashcode,compare和check 異常等方法。//先看構造函數: //工具類,所以構造函數是私有的。防止反射創建對象所以拋出異常。 private Object

原创 讀String源碼

//先看構造函數public String() { this.value = new char[0]; }public String(String original) { this.value = ori

原创 spring之ApplicationContextAware接口

//該接口會幫你注入ApplicationContextpublic interface ApplicationContextAware extends Aware { void setApplicationContext(Applica

原创 讀EnumSet源碼

//一個基於枚舉的Set,其效率在大多數時候都比HashSet高。//該類是一個抽象類其實現類有RegularEnumSet和JumboEnumSet。//創建一個最初包含指定元素的枚舉(帶of的方法實現基本都一樣)public stat

原创 spring之FactoryBean接口

//該接口主要用於從spring中獲取bean的時候如果實現了該接口會直接調用該接口中的getObject來獲取beanpublic interface FactoryBean<T> { T getObject() throws Exce

原创 讀Collections源碼

//一個操作集合的工具類,裏面全部都是靜態方法。//根據元素的自然順序進行排序 public static <T extends Comparable<? super T>> void sort(List<T> list) {

原创 java從數據庫中查出來二次封裝基於註解

實現類似於mybatis一對多關係和一對一關係:上代碼:/** * @author * @version 創建時間:2017年3月23日 上午11:01:39 * @description 定義1對多關係

原创 讀AbstractStringBuilder源碼

//該類是StringBuilder和StringBuffer基類實現了Appendable和CharSequence接口//StringBuffer是線程安全的.所以就在所有方法上加上了synchronized關鍵字。//先看構造函數A

原创 spring之BeanDefinitionRegistryPostProcessor接口

//該接口繼承自BeanFactoryPostProcessor,該接口可用於動態像spring註冊bean//例如在spring跟mybatis的整合中MapperScannerConfigurer就實現了該類用於動態註冊mapper。

原创 springmvc執行過程

[img]http://dl2.iteye.com/upload/attachment/0129/2812/d39c7cd0-55dd-30cb-8777-bbac2a8c4415.png[/img]spr

原创 java從數據庫中查出來二次封裝基於XML

實現類似於mybatis的配置關係一對多或者一對一的實現:基於<XML>實現:先上個配置文件 <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper

原创 讀ThreadLocal源代碼

//可以存取線程局部變量//先看構造函數public ThreadLocal() { }//設置值public void set(T value) { Thread t = Thread.currentThread()

原创 讀java Optional 源碼

//該類是jdk1.8新增的類,主要是爲了解決NPE問題。//先看構造函數: private Optional() { this.value = null; } private Optional(T value) {