Spring IOCの3つの配置方式

4124 ワード

IOC:
       Inversion of Control制御反転とは、オブジェクトの作成権が逆転してSpringに管理されています.Springにオブジェクトを管理してもらいたいです.Springにオブジェクトを渡して作成することが前提です.
Springは3つのIOCの構成を提供する.
1、XML宣言の設定
2、コメントの構成(推奨)
3、JavaConfig声明の配置(推賞)
 
XML宣言の設定
      名前の通り、beanの情報を配置します.xmlファイルの中で、Springを通してファイルをロードして私達のためにbeanを作成します.現在SSMのプロジェクトでは、サードパーティクラスやいくつかの配置ツール類をこのように配置しています.主な原因は、サードパーティクラスがSpring注釈をサポートしていないからです.しかし、より良い方法はJavaConfigで声明することです.
      利点:どのシーンにも使えます.構造がはっきりしていて、分かりやすいです.
      短所:配置が煩雑で、維持しにくく、無味乾燥で、拡張性が悪い
くりを一つあげる
1、アプリ.xmlファイルの設定(名前は任意)
2、名前空間を宣言する  xmlns="http://www.springframework.org/schema/beans …
3、beanの配置



    
    
テスト:ここはSpringJUnit Class Runnerの方式を採用しています.
@RunWith(SpringJUnit4ClassRunner.class)
//   application.xml    
@ContextConfiguration("classpath:application.xml")
public class SpringIocTest {

	@Resource
	private  User user;

	@Test
	public void test() {
		System.out.println(user);
	}

	//     :ioc.User@1a84f40f
}
コメントの設定
      クラスに注釈を加えることによって、Spring管理にクラスを渡すと、Springは@Component、@Controller、@Service、@Repositoryという4つの注釈を自動的にスキャンして、Springの注釈スキャン器を配置する必要があるという前提で、Springを作成して管理してくれます.
      長所:開発が便利で、分かりやすく、メンテナンスが便利です.
      短所:限定性があり、一部の第三者資源に対してはコメントを追加できません.XMLまたはJavaConfigの方式でしか設定できません.
くりを一つあげる:
1、xml名前空間の配置  xmlns:context="http://www.springframework.org/schema/context「
2、xmlで注釈スキャンを開始する
3、類に注釈を声明する


    
    

テスト:
@RunWith(SpringJUnit4ClassRunner.class)
//   application.xml    
@ContextConfiguration("classpath:application.xml")
public class SpringIocTest {

	@Resource
	private  User user;

	@Test
	public void test1() {
		System.out.println(user);
	}

	//     :ioc.User@49e53c76
}
JavaConfig声明の構成
      クラスの作成を私達の構成のJavcConfigに任せて完成します.Springはメンテナンスと管理だけを担当しています.純粋なJava作成方式を採用しています.それは本質的にXML上の構成声明をJava配置クラスに移行します.
      利点:任意のシーンに適用され、構成が便利です.純粋なJavaコードなので、拡張性が高く、非常に柔軟です.
      短所:Java類の方式を採用しているので、声明は明らかではないです.もし大量に構成されているなら、可読性は比較的に悪いです.
くりを一つあげる:
1、配置類を作成し、@Configrationコメントを追加して、配置類として宣言する.
2、作成方法、方法は@beanを追加し、この方法は実例を作成して返します.この例を作成すると、spring管理に渡します.方法名はインスタンス名と同じ(イニシャル小文字)を提案します.
3、プロファイルの読み込み(前にappration.xmlのプロファイルを読み込むようなもの)
/**
 *    ,       bean
 *
 * @author:LiChong
 * @date:2018/11/28
 */
@Configuration
public class BeanConfig {

	@Bean
	public User user() {
		return new User();
	}
}
テスト:ここでxmlのプロファイルをロードプロファイルに変更します.
@RunWith(SpringJUnit4ClassRunner.class)
//   beanConfig   
@ContextConfiguration(classes = BeanConfig.class)
public class SpringIocTest {

	@Resource
	private  User user;

	@Test
	public void test2() {
		System.out.println(user);
	}

	//     :ioc.User@34b7ac2f
}
まとめ:
     この3つの方法は全部Springに任せられますが、どうやって選択すればいいですか? 
     方式の長所と短所によって、現在の企業開発は主に以下のような方式を採用しています.
     1、カスタムステートメントのクラス(第三者以外)は、注釈の方式を採用する.
     2、第三者類に対して、XMLまたはJavaConfigの方式を採用する.
    Spring Bootの出現により、無配置化の傾向にあって、XML配置はJava Configに取って代わられつつあります.私たちはクラスを作ると同時に多くのことをするかもしれません.XMLは満足できません.Spring BootはJavaConfig配置を推奨します.
 
--------------------------------------------------------------
文章の内容は個人学習の総括です.もし間違っていたら、ご指摘ください.ありがとうございます.