春
- 春とは何ですか
- 春はオープンソースのフレームワークです
- 春には、エンタープライズアプリケーション開発を簡素化することができます
- コアフレームワークとして:とAOP(指向プログラミングアスペクト指向プログラミング):スプリングのIoC(反転制御コントロールの逆数)であります
- 機能
- 軽量:. Springベースの非侵襲的アプリケーション春の開発オブジェクトは、春のAPIに依存しない場合があります
- 依存性注入(DI --->依存性注入、IOC)
- アスペクト指向プログラミング(AOP)
- コンテナ:それは含まれており、アプリケーションオブジェクトのライフサイクルを管理しているため、スプリングがコンテナであります
...
- スプリングモジュール
こんにちは
- レディ
依存性の導入
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.8.RELEASE</version> </dependency>
Helloクラスを作成します。
public class Hello { public void hello() { System.out.println("hello spring"); } }
設定ファイルを書きます
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="hello" class="cn.ann.Hello"/> </beans>
- 大きな塊豆が固定されている文言タグの後ろに、無脳症のようにコピーして貼り付けます
- 豆タグ、IDは一意の識別子、通常、クラス名の最初の文字を小文字で、クラスは、クラスの完全なクラス名です
テストクラスのテストを書きます
@Test public void demo01() { ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); Hello hello = (Hello) ac.getBean("hello"); hello.hello(); }
結果:
IOC&OF
- 何ですか?
- IOC:コントロールのIOC-反転、「制御の反転」、ない技術が、デザインのアイデアです。Java開発では、IOCはあなたではなくあなたの内部のオブジェクトの上に伝統的な直接制御するよりも、コンテナコントロールにオブジェクトを設計していることを意味します。このデザインのアイデアは、カップリング手順を減らすことです
- DI:依存性注入、すなわち、「依存性注入」は:実行時のコンポーネント間の依存関係が容器によって決定され、コンポーネントに容器ダイナミック依存性によって注入される画像は述べています。
- Iteyeタオは牛IOCのSpringフレームワークの技術的な理解を開く見ることができます詳細をお知りになりたい、とのリンクを添付:http://jinnianshilongnian.iteye.com/blog/1413846
分析とテストのプロファイルタイプ
- テストカテゴリコード解析
- テストクラスの最初の行は
new ClassPathXmlApplicationContext(配置文件路径)
戻り値またはのApplicationContextたBeanFactoryを受信することができるIOCコンテナを、初期化されます- たBeanFactory:あなたは使用してオブジェクトを作成すると遅延ロードのみ第1捕捉対象を作成する。すなわち、戦略を
- ApplicationContextの:あなたが使用してオブジェクトを作成すると即時負荷、すなわち、戦略を:後のオブジェクトをロードするために、設定ファイルを読み終え
- 第二のラインテストクラス
ac.getBean("hello")
指定されたオブジェクトIOCコンテナを取得してもよいが、idパラメータ値であってもよく、それはクラスオブジェクトであってもよいです- パラメータは、IDです:豆のid値マップを取得します。
- クラスオブジェクトパラメータは、豆のタグのタイプのコンテナのみクラス属性:つまり、適切な豆、豆だけコンテナクラスを得ます
- テストクラスの最初の行は
- 豆の春管理詳細
- Beanを作成するには、3つの方法
- デフォルトコンストラクタで作成
<bean id="user" class="cn.ann.User"/>
- 一緒にidとクラス、およびなし他のラベルを使用してのSpring Bean構成ファイル内のラベルのその後の使用は、Beanオブジェクトではなく、クラスのデフォルト引数のないコンストラクタを作成するために、デフォルトコンストラクタで、オブジェクトを作成することはできません
作成するために、通常のファクトリメソッドを使用します
<bean id="userFactory" class="cn.ann.UserFactory"/> <bean id="user" factory-bean="userFactory" factory-method="getUser"/>
- 静的ファクトリメソッドを使用して作成
<bean id="user" class="cn.ann.StaticFactory" factory-method="getUser"/>
- デフォルトコンストラクタで作成
- スコープBeanオブジェクト
- スコープ属性豆のタグ
- シングルトン:シングルトン(デフォルト)
- プロトタイプ:プロトタイプはより多くのケースであります
- リクエスト:Webアプリケーションの範囲に適用される要求
- セッション:セッションスコープは、Webアプリケーションに機能しています
- グローバル・セッション:クラスタ環境のセッションのスコープ(グローバルセッションスコープ)での役割ではなく、クラスタ、セッションがあります
- スコープ属性豆のタグ
- Beanオブジェクトのライフサイクル
- シングルトン:
- 作成します。で作成したコンテナを作成します。
- 破壊:コンテナと破壊の破壊を伴います
- 概要:コンテナのライフサイクルと同じ
- プロトタイプ:
- 作成:初めてオブジェクト
- 破壊:Javaのガベージコレクタによって回収
- シングルトン:
- Beanを作成するには、3つの方法
- 春の依存性注入
- 何ですか?
- クラスの他の目的は、現在のクラスを使用する必要があり、春はそこにある私たちを提供しています、我々は唯一の設定ファイルに依存関係を維持する必要がありますすることができ
- データを挿入することができます:3があります。
- 基本データ型と文字列
- 豆の他のタイプ
- 複合型、コレクション型
- 注入法:3があります(注意、常にデータを変更すると、注射には適していません)
- コンストラクタを使用して
- setメソッドを使用して
- 注釈を使用します
コンストラクタ・インジェクションを使用
<bean id="user" class="cn.ann.User"> <constructor-arg name="" value="" type="" index=""></constructor-arg> </bean>
- コンストラクタ-argがタグを使用する必要があり、属性:
- 指定されたタイプを挿入するデータのタイプは、コンストラクタのパラメータは、一つまたはパラメータの一部である:タイプ
- インデックス:挿入位置を特定するデータのためのインデックス、ゼロ
- 名前:コンストラクタのパラメータの割り当ての名前を指定します。
- コンストラクタに上記の3つのパラメータは、どのパラメータの割り当てを指定するために使用されるが、最も一般的に使用されているときに名前
- 値:基本タイプと他のデータ型を提供するための
参考文献:豆の他の種類を参照するために使用される、容器は、いくつかのIOC Beanオブジェクトでなければなりません
- 利点:このようなデータは、必見のとき、オブジェクトが引数なしのコンストラクタを提供しない場合、Beanを取得し、それ以外のオブジェクトが正常に作成することができません
- 短所:データを必要としない場合、それはオブジェクトを作成できません。
- コンストラクタ-argがタグを使用する必要があり、属性:
注入セット(より一般的な)を使用します
<bean id="user" class="cn.ann.User"> <property name="name" value="zs"/> <property name="age" value="23"/> <property name="birthday" ref="date"/> </bean>
- 属性、プロパティタグを使用する必要があります。
- 名前:インジェクションを指定するために使用される属性の名前
- 値:指定されたプロパティインジェクションの値
参考文献:豆の他の種類を参照するために使用される、容器は、いくつかのIOC Beanオブジェクトでなければなりません
- 利点:直接明確な制限はありません、のようなオブジェクトを作成するために、デフォルトのコンストラクタを呼び出します
- 短所:オブジェクトのsetメソッドを取得が行われない場合があります
- 属性、プロパティタグを使用する必要があります。
- 複合型注入
Beanのプロパティ(省略ゲッター、セッターとのtoString):
public class CollectionDemo { private String[] strings; private List<String> list; private Set<String> set; private Map<String, String> map; private Properties prop; }
配列型(文字列[])
<property name="strings"> <array> <value>aaa</value> <value>bbb</value> <value>ccc</value> </array> </property>
リストタイプ
<property name="list"> <list> <value>AAA</value> <value>BBB</value> <value>CCC</value> </list> </property>
セットタイプ
<property name="set"> <set> <value>111</value> <value>222</value> <value>333</value> </set> </property>
マップタイプ
<property name="map"> <map> <entry key="key01" value="val01"/> <entry key="key02" value="val02"/> <entry key="key03" value="val03"/> </map> </property>
プロパティの種類
<property name="prop"> <props> <prop key="prop01">val01</prop> <prop key="prop02">val02</prop> <prop key="prop03">val03</prop> </props> </property>
注:配列、リスト、および注射リスト構造に設定することができ、エントリや小道具がマップ構造に注入することができます
- 何ですか?
コードへのリンク:ここのspring01、クイックスタート