I.はなぜ春を使うのか?
デカップリング、簡素化の開発を容易にするための1、
春のメンテナンスでは、春の管理にすべてのオブジェクトとの依存関係を作成することができ、大規模な工場です。
アプリケーションを実現するために、ビジネスに集中することができ、それは一般的なロジック部として抽象化することができます。
依存性注入からコンテナオブジェクトを取得するオブジェクトへのフレームの例として、。
優れたフレームワークのさまざまな統合が容易2、
スプリングは、優れたオープン・ソース・フレームワークの様々な、その内部が(例えばStruts2の、休止状態、MyBatisの、等)に優れたフレームワークの様々な直接的なサポートを提供し排除するものではありません。
設定ファイルによって導入優れたオープンソースのフレームワーク。
3、のJava EE APIの困難さを軽減
いくつかのAPIのJava EE開発の春(JDBC、JavaMailの、リモート呼び出し、など)を使用することは非常に困難であるパッケージを提供しており、これらの困難なアプリケーションのAPIを作ります
大幅に削減。
プログラムに簡単にテスト4、
春のサポートJUnit4は、あなたが簡単に春のコメントでプログラムをテストすることができます。
5、AOPプログラミングサポート
春はアスペクト指向プログラミングを提供し、あなたは簡単に傍受や運用監視にプログラム許可を実装することができます。
6、宣言型トランザクションのサポート
二、春の3つの要素
3つの主要コンポーネント:豆/コア/コンテキスト
第三に、三つの基本的な概念
1、IOC
制御の反転いわゆる制御のIOCすなわち反転は、開発者が作業の春に初期化されたオブジェクトを作成することです。
2 OF
依存性注入は、自動的にオブジェクトの属性を注入しました。
3、AOP
指向プログラミング。
// 目标对象方法
public void insert() {
insertToDatabase();
}
// 代理对象方法
public void insert() {
log();
authority();
beginTransation();
insert()
log();
commit();
}
四、3分割計画
1、IOC
手書き単純IOC、DIフレームワーク、ソースコードを探索します
2、AOP
JDKダイナミックプロキシ原則、CGLIBダイナミックプロキシ原理は、ソースコードを探求します
3、宣言的トランザクション
ファイブ、Springの設定
1、純粋なXML設定
2、XMLとノート
3、純粋なノート
六、IOC
1、手書きIOCフレームワークのアイデア
①编写Spring格式的xml文件,定义bean;
②解析xml文件,加载bean配置到BeanDefinition缓存集合中;
③创建Bean对象,分为三步:
第一,实例化对象,相当于new一个对象;
第二,初始化对象,设置属性值;
第三,将对象存入缓存中。
2,三级缓存
/** Cache of singleton objects: bean name --> bean instance */
private final Map<String, Object> singletonObjects = new ConcurrentHashMap<String, Object>(256);
/** Cache of singleton factories: bean name --> ObjectFactory */
private final Map<String, ObjectFactory<?>> singletonFactories = new HashMap<String, ObjectFactory<?>>(16);
/** Cache of early singleton objects: bean name --> bean instance */
private final Map<String, Object> earlySingletonObjects = new HashMap<String, Object>(16);
DI的不可逾越的山:循环依赖。
3,设计模式
简单工厂
策略设计模式
ClassPathXmlApplicationContext.ClassPathXmlApplicationContext
单例模式
装饰器模式
七,我的实践
1,IOC
2,策略设计模式
3,泛型
4,注解
5,单例模式
public SingleTonLazy getSingleTon() {
if(null == singleTon) {
singleTon = new SingleTonLazy();
}
return singleTon;
}