依存性注入
説明:春は、開発志向の促進へのインタフェースを実現するためにDI技術で、プログラミングの層と層とを切り離します。
1.依存性注入(DI):外側容器(スプリング)によって実行されるアプリケーションでは、動的コンポーネントに依存するであろうが、被験体に注入されます。
2.潜在的なPOJO刺激する
シンプルなプレーンなJavaクラス:POJO(プレーン古いJavaオブジェクトを)。
ばねはJavaBeanのアプリケーションコンポーネントによって表され、バネ成分はPOJOの任意の形態とすることができる、
それは言うことができるPOJO JavaBeanは同義語です。
プログラミングモデルと非春のアプリケーションが春に同じ役割を果たすことができることをSpringコンポーネント、Springの非侵襲的な手段であるというところはありません。
*非侵襲的:私たちはインストールしたり、適切な時間枠で春をアンインストールすることができることを意味していない強制的に継承または実装するクラスおよびインタフェース春、
1つの魔法の方法与えられたスプリングPOJOは、DIによってそれらを組み立てることで、DIは、互いの間でアプリケーションオブジェクトの疎結合を維持するのを助けることができます。
二、DI機能を実現する方法ですか?
図1に示すように、任意のアプリケーションは、特定のビジネスロジックを達成するために、これらのクラスのうちの各コラボレーション、二つ以上のクラスが有意義であろう。伝統的な慣行によると、各オブジェクトは、高度に結合され、テストするのが難しいコードにつながる参照、(であること、それはオブジェクトに依存)オブジェクトで、独自の相互協力を管理する責任があります。
図2は、DIを介して、依存関係システム・オブジェクトは、オブジェクトを作成するときに、サードパーティ・コンポーネントの各オブジェクトセットの調整を担当します。オブジェクトは、独自に作成するか、その依存関係を管理する必要はありません。3.1依存関係図が自動的にその彼らに必要とする被験体に注入しました。
図依存性の注入は、自身が依存関係を取得するというよりも、対象ターゲットオブジェクトに自動的関係に依存します
第三に、実際のプロジェクト
経験スプリングDI嵌合インタフェース指向プログラミングの層の間にデカップリング、完全なケースレターケース変更:
アイデア:
インタフェースChangeLetter作成するための1、
2、クラスインターフェースを実装します。
実装クラス:小文字に大文字の完成。
別の実装クラス:大文字と小文字の完成。
図3に示すように、オブジェクトは、バネ容器に配置されています。
図4に示すように、オブジェクトの使用は、機能を実現します。テストを完了します。
具体的な手順:
- 定義されたインタフェース
package com.cxh.inter;
public interface ChangeLetter {
public String change();
}
- 二つの実装クラス
//小写字母转换为大写字母的实现类
package com.cxh.inter;
public class UpperLetter implements ChangeLetter {
private String str;
@Override
public String change() {
return str.toUpperCase();
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str=str;
}
}
//大写字母转换为小写字母的实现类
package com.cxh.inter;
public class LowerLetter implements ChangeLetter {
private String str;
public String change() {
return str.toLowerCase();
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str=str;
}
}
- ビジネスロジッククラス
package com.cxh.inter;
public class ChangBll {
private ChangeLetter chang;
public void change() {
System.out.println("ChangBll---change");
System.out.println(chang.change());
}
public void setChang(ChangeLetter chang) {
this.chang = chang;
}
}
- spring.xml
<?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-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<!-- 大写变小写 -->
<bean id="change" class="com.cxh.inter.LowerLetter">
<property name="str" value="ABRTY"></property>
</bean>
<!-- 小写变大写 -->
<!-- <bean id="change" class="com.cxh.inter.UpperLetter">
<property name="str" value="abcde"></property>
</bean> -->
<bean id="changBll" class="com.cxh.inter.ChangBll">
<property name="chang" ref="change"></property>
</bean>
</beans>
- テストカテゴリ
package com.cxh.inter;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ChangeLetterTest {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("spring.xml");
ChangBll changBll=(ChangBll)ac.getBean("changBll");
changBll.change();
}
}
- 業績