Springフレーム初級

6113 ワード

目次
Springとは何ですか
POJO
いくつかの概念
制御反転IOC:
依存注入DI:
面に向かってプログラミングする:
初歩的な応用
コメントの設定
常用注釈
例1
例2
XML設定
Springとは何ですか
Springは軽量級制御反転(IoC)と切断面(AOP)向け容器フレームです.インターフェース向けプログラミングです.松結合は分離しやすいです.
プログラミングの仕事量を軽減するために設計します.
POJO
フルネームはPlain Ordinary Java Object/Pure Old Java Objectで、それは普通のjavaオブジェクトであって、特別なオブジェクトではなく、一部のgetter/setterメソッドを持っている種類はPOJOと呼ぶことができます.
JavaBeanはPOJOより複雑です.  Java Beanは多重化可能なコンポーネントであり、Java Beanに対しては厳密な仕様はありません.理論的には、どのJava類もBeanでありうる.しかし、通常はJava Beanはコンテナによって作成されるので、Java Beaビンは無参のコンストラクタを持つべきであり、また、通常はJava BeanはSerialzableインターフェースを実現してBeanの持続性を実現する必要がある. 
いくつかの概念
制御反転IOC:
一つのシステムの動作は簡単ないくつかの種類では実現できません.多くの種類の協力が必要です.これにより、各オブジェクトは協力する対象と依存関係を持つ必要があります.つまり、クラスを定義する時に他の種類のオブジェクトを使用して、対象は自分で作成します.現在はすべてのコンポーネントの初期化と呼び出しは容器が担当しています.この過程の中で、制御権の転換が実現され、対象が他の対象の引用を得る方式がIOCとなった.
依存注入DI:
上で述べたように、制御反転IOCは思想概念であり、注入に依存することは具体的な実現である.依存注入とは、IoC容器が動作中にある依存関係を動的にオブジェクトに注入することである.
面に向かってプログラミングする:
拡張機能がソースコードを修正せず、機能コードを業務論理コードから分離すること.主にログ記録、性能統計、セキュリティコントロール、事務処理、異常処理などが含まれています.これらの公共の業務と関係のない部分は独立して作成します.
初歩的な応用
まず必要なカバンを導入します.
org.springframework
mavenのpomノード
    
      org.springframework
      spring-beans
      4.2.0.RELEASE
    

    
      org.springframework
      spring-context
      4.2.0.RELEASE
    

    
      org.springframework
      spring-core
      4.2.0.RELEASE
    

    
      org.springframework
      spring-expression
      4.2.0.RELEASE
    
コメントの設定
常用注釈
@Configration
このクラスはSpring IoC容器をbean定義のソースとして使用することができます.
 @ビーン
注釈は、Springに@Beanを有する注釈方法は、Springアプリケーションのコンテキストに登録されているbeanとして登録されるべきオブジェクトに戻ることを教えている.
 @Required
注記bean属性のsetter方法に適用すると、その影響を受けたbean属性はXMLプロファイルに配置されなければならないことを示しています.そうでないと、容器はBeanInitializationException異常を投げます.
@Autowired
注記、クラスのメンバー変数、方法、および構造関数を表示して、自動組立の作業を完了します. 
@Qualfier
同じタイプのbeanを複数作成すると、一つだけ組み立てることができます.@Qualfierコメントと@Autowiredコメントを使って、beanを指定します. 
java種類のApplication Contect Utilを創立して配置種類として、以下は経典の何本の小銃で例を挙げます.
例1
Gnインターフェース
public interface Gun {
    void name();
}
銃を三丁セットします.モーゼル、モシンカン、中正です.
public class kar98k implements Gun {

    @Override
    public void name() {
        System.out.print("  98k");
    }
}
クラスが作成されました.これまでとは違って、Springでオブジェクトを管理し、Appplication ControntUtil.javaに配置されています.
    @Bean
    public Gun getk(){//     ,      
        return new kar98k();
    }

    @Bean
    public Gun getm(){
        return new M91();
    }

    @Bean
    public Gun getz(){
        return new Zhongzheng();
    }
相手はSpringに任せましたので、彼に手伝ってもらいたいです.多くのことは私の手でしなくてもいいです.
ApplicationContext app=new AnnotationConfigApplicationContext(ApplicationContextUtil.class);
Gun g1=app.getBean(kar98k.class);
g1.name();
以上で最も簡単な例を完成しました.一つの例モードで生成されたオブジェクトは、プロジェクト全体がマニュアルnew 98 kというオブジェクトではなく、この一つしかないです.後は簡単に切断面向けにプログラミングできます.オブジェクトのライフサイクルを設定することもできます.
例2
小銃は部品を加えて、照准器を加えます.
public interface Sight {
    void say();
    String getS();
    void setS(String s);
    int geti();
    void setI(int i);
}
 get setを略して,シミュレータを使って2種類に分ける.
public class ReflexSight implements Sight {
    private String s="      ";

    public void say(){
        System.out.print("  "+s+" ");
    }
}
public class TelescopicSight implements Sight{
    private int i=1;

    public void say(){
        if(i==1){
            System.out.print("         ");
        }else{
            System.out.print("  "+i+"   ");
        }
    }
}
二段のインスタンスコードを追加します.
    @Bean
    public Sight getTs(){
        return new TelescopicSight();
    }

    @Bean
    public Sight getRs(){
        return new ReflexSight();
    }
Gunインターフェースとka 98 kクラスを変えて、二つの注釈@Autowiredと@Qualfierを使って、Springに自動setの一例を教えます.この例はgetsT(構成クラスでは@Benマークの方法名)を探します.Sightタイプのオブジェクトが一つしかないなら、@Qualfierを書かないでください.これで依存系の自動注入が完了します.
public class kar98k implements Gun {
    private Sight sight;

    @Autowired
    @Qualifier("getTs")
    public void setSight(Sight sight) {
        this.sight = sight;
    }

    @Override
    public void name() {
        System.out.print("  98k");
    }

    @Override
    public Sight getSight() {
        return sight;
    }
}
ApplicationContext app=new AnnotationConfigApplicationContext(ApplicationContextUtil.class);
Gun g1=app.getBean(kar98k.class);
g1.getSight().say();
g1.name();
最終運転出力   望遠鏡のシミュレーターを装着したモーゼル98 k
静かに狙撃手をしたいです.配置クラスで8倍鏡に切り替えて、getsTメソッドを設定してオブジェクトを生成します.
    @Bean
    public Sight getTs(){
        Sight sight=new TelescopicSight();
        sight.setI(8);
        return sight;
    }
XML設定
例としてはモシンナーのオブジェクトは、赤い点の擬似器と組み立てられています.




    
        
    

    
        
    
テストします
ApplicationContext app1=new ClassPathXmlApplicationContext("applicationContext.xml");
Gun g2=app1.getBean(M91.class);
g2.getSight().say();
g2.name();
出力は紅点を装って照準器をシミュレートしたモシンナカンM 91です.
自動組立注釈を使用すれば、beanラベルには組立構成を省略できます.