12月2日号ラーニングコンテンツ

まず、春の歴史的背景の出現

1.1なぜ春?

春は前に出て来なかった、EJBの時代で、EJBが何であるか、私は一言で言えばヘビー級のボックスで、経験していない
フレーム。ロッド・ジョンソンは2002年に編集した「エキスパート一対一J2EEの設計と
開発」、のJava EEフレームワークは、肥大化し、非効率的な、現在からその言ったときに、システムを批判ブック
現実、同じ年には「エキスパート一対一を発売以下のためのEJBのないJ2EE開発」、
EJBの重い肥大化した構造の多様性は、簡潔で、それを交換するための実用的な方法で、ハンフリーズは、それぞれ1とマイナス、ずつ分析した
古典と述べました。
2003年以来、「1つのJ2EEデザインとの専門家の1によって精緻化開発」
-Spring由来軽量のJava開発フレームワークの概念とプロトタイプ部分が上昇します。その目的は縮退している
JavaEEのエンタープライズアプリケーション開発の変更のいくつかのバージョンの後に、これ。

1.2Springの発展の簡単な歴史

第一段階:XML構成
Spring1.x時代のは、プロジェクトが展開として、我々は複数にXMLファイルを持って、XMLコンフィギュレーション豆を使用している
、その後、頻繁に開発クラスおよびコンフィギュレーションファイルを切り替え、設定ファイルを
最初に2段階:コンフィギュレーションノート
JDK1.5のアノテーションをサポートして持ち込まSpring2.x時代に、春は声明(のような豆のアノテーション提供
大幅な構成の量を減らし、@Serviceなど)。注釈およびXML設定:この時点で議論春のサークルがあり
、より良い正確に設定されていますか?私たちの最終的な選択は、注釈付きXMLを使用して、アプリケーション、サービス構成の基本的な構成です。
第三段階:Java構成
Spring3.x開始から、春には、configure JAVAする能力を提供します。Spring4.xと春のブートはプッシュしている
JAVA構成の推奨使用を。JAVAの設定の使用は、あなたがより理解することができます豆を構成し

二、春の概要

スプリングは、Java SE / EEは、IOC(の逆数にフルスタックのためのオープンソースアプリケーションフレームワークを軽量積層され
、コアとして提供し:及びAOP(指向プログラミングアスペクト指向プログラミング):制御の反転制御)
表示層ばね用MVCと春のJDBC永続化層とビジネス層のトランザクション管理およびその他のエンタープライズ
級の応用技術が、また、よく知られているサードパーティ製のフレームワークやライブラリの多くのオープンソースの世界の統合は、最も使用となっている
オープンソースのJava EEエンタープライズ・アプリケーション・フレームワークの。

三、春の強み

便利開発簡素化デカップリング
スプリングによって提供IOCコンテナを、オブジェクト間の依存関係は、スプリングが引き起こされる過度のカップリングハードプログラムを回避するように制御呼ぶことができます。ユーザーは、もはやシングルトンクラスはこれらと書かれている基本的なコードの他のニーズを分析し、ファイル属性がない、上位のアプリケーションに集中することができます。
サポートをプログラミングAOP
SpringのAOP機能を通じて、アスペクト指向プログラミングを容易、多くは伝統的なOOPの機能を使用して達成することは簡単ではありませんが簡単にAOPによって対処することができます。
宣言型トランザクションのサポートは
、宣言的な方法で柔軟を通じてトランザクションを管理、開発効率と品質を向上させるために、トランザクション管理コードの私たちの単調な退屈から解放することができます。
テストの手順は容易にするために
、プログラムのほぼすべてのテストを非コンテナ依存用いて行うことができ、もはやテストすることは高価な操作ではありませんが、簡単に物事を行います。
優れたフレームワークの様々な簡単に統合
春は優れたフレームワーク(Strutsのは、Hibernate、ヘッセ、クォーツなど)のさまざまな直接的なサポートを提供し、様々なフレームワークを使用することの難しさを減らすことができます。
JavaEE-APIは困難減少させるために使用される
薄い封入層、大幅に減少APIを利用することの難しさ(例えば、JDBC、JavaMailの、リモート呼び出しなど)春ののJavaEE-APIを。
Javaのソースコードは、学習の古典的な例である
だけで創意工夫して、春のソースコードの設計絶妙な、明確な構造を、常にJavaのデザインパターンとJava技術の深い知識の柔軟な使用のマスターを体現しています。そのソースコードは、Java技術のベストプラクティスの例となるものではありません。

四、制御及び依存性注入のIOC DI反転

簡単に言えば、これはオブジェクトへの権利の一例であるインスタンス化するために、Springフレームワークに引き渡さたちのインスタンス化されたオブジェクトのオリジナルは、逆になる。..
IOCの考え方は次のとおりです。道のフレームと相まって高置換度新しいコンストラクタ()あなたが作成する必要がある場合、あなたが行くことができるように、オブジェクトを作成する必要がない時に破壊し、統合管理、資源保護、および効率を向上させるために形成します。
DIの考え方は次のとおりです。私たちのためのSpring Frameworkの操作属性が割り当てを完了すること。

ファイブ、SpringのIOC

5.1 IOCは何ですか?

IOC:反転制御と呼ばれます。プロセスは、管理するSpringコンテナに割り当てされるオブジェクトのライフサイクル、初期設定(複数の非遅延遅延ロード負荷の場合の単一の場合)、財産の破壊、一連を作成します。

5.2用語集

1、ClassPathXmlApplicationContext:それはルートクラスからのコンフィギュレーション・ファイルのロードされた
:2、豆のタグ
役割:春の構成オブジェクトを作成するようにするには。
デフォルトでは、それが呼び出すパラメータなしのクラスのコンストラクタです。何も引数なしのコンストラクタがない場合は作成することはできません。

5.3春の手順を作成します

1.座標の導入

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.3.RELEASE</version>
    </dependency>

2.春のコアファイルを作成します。applicationContext.xmlをは
豆のタグ作成3.
4.ロードapplicationContext.xmlをコアファイルを

シングルおよびマルチ5.4spring例例

<!--
	bean标签:将指定类对象的创建过程交给Spring容器来管理
	class属性:指定类的具体路径
	id属性:为bean标签去唯一标识符
	scope属性:指定Spring创建对象时的方式,singleton单例、prototype多例,默认为单例
-->
<bean id="smallDog" class="cn.java.iocl.Dog" scope="prototype"></bean>

非遅延読み込みと遅延読み込みに5.5spring

非遅延ロード(接地荷重、春デフォルト):あなたは関係なく、オブジェクトがすぐに作成するかどうかの、春のコンテナを起動すると
、すべてのオブジェクトを。
レイジーロード:使用する場合など、Springコンテナを作成するためにしましょう
:長所と短所
(1)、より多くのメモリ空間のセーブ遅延ロード、非遅延ロードは、より多くのメモリ容量を消費します。
(2)非遅延読み込みエラーが早期に発見され、遅延ロードのエラーが表示されなくなります。

六、DIの春

定義:依存性注入。それらのオブジェクトを割り当て


<!--主要有两种方式
	1.通过set方法
-->
<!--admin-->
  <bean id="admin" class="cn.kgc.domain.Admin"></bean>
  <!--通过管理setXXX属性的方式-->
  <bean id="db" class="cn.kgc.domain.DB">
    <!--DI:依赖注入-->
    <!--
    property标签:表示注入的属性
    name:表示实体中的属性名
    value :表示给实体中的属性注入的值
    spring的依赖注入:就是去调用了javabean的setXXX方法。==
javabean的规范
    ref属性:ref="bean标签的id属性名":引入其他的bean标签的映射
    -->
    <!--注入String类型-->
    <property name="driver" value="com.mysql.jdbc.Driver">
</property>
    <!--注入Integer类型-->
    <property name="port" value="3306"></property>
    <!--注入实体类-->
    <property name="admin" ref="admin"></property>
    <!--注入list集合-->
    <property name="list">
       <list>
        <value>list集合</value>
        <value>true</value>
        <value>3.14</value>
        <!--引入实体类-->
        <ref bean="admin"></ref>
      </list>
    </property>
    <!--注入set集合-->
    <property name="set">
      <set>
        <value>set集合</value>
        <value>false</value>
        <value>3.15</value>
        <ref bean="admin"></ref>
      </set>
    </property>
    <!--注入map集合-->
    <property name="map">
      <map>
        <entry key="name" value="郭德纲"></entry>
        <entry key="gender" value=""></entry>
      </map>
    </property>
    <!--注入properties属性-->
    <property name="properties">
      <props>
        <prop
key="drivername">com.mysql.jdbc.Driver</prop>
        <prop key="url">jdbc:mysql:///person_info</prop>
        <prop key="username">root</prop>
        <prop key="userpassword">sa123</prop>
      </props>
    </property>
  </bean>
  <!--
	特点:通过set方法赋值时,首先通过无参构造方法创建对象,然后通过属性对应的set方法给对象赋值
	2.通过有参构造器
	-->
	<!--
  constructor-arg标签:一个标签只能描述一个有参构造方法中的形参
    index属性:有参构造器中的参数下标
    name属性:形参属性名
七、常见面试题
    type属性:形参属性类型
    value属性:形参属性的值
-->
<!--通过管理构造设置属性的方式-->
  <!--再重新创建一个DB类的对象-->
  <bean id="smallDB" class="cn.kgc.domain.DB">
    <constructor-arg index="0" name="driver" value="com.mysql.jdbc.Driver" type="java.lang.String">
</constructor-arg>
    <constructor-arg index="1" name="port" value="3306"
type="java.lang.Integer"></constructor-arg>
    <constructor-arg index="2" name="price" value="3.14"
type="java.lang.Float"></constructor-arg>
    <constructor-arg index="3" name="admin" ref="admin"
type="cn.kgc.domain.Admin"></constructor-arg>
  </bean>
  <!--特点:通过有参构造方法给对象的属性赋值时,首先调用有参构造方法创建对象,然后通过
同一个有参构造方法给对象的属性赋值  -->
公開された28元の記事 ウォン称賛16 ビュー590

おすすめ

転載: blog.csdn.net/qq_37881565/article/details/103357219