非常に詳細なSpringXMLと注釈フォームの構成の比較

  • j3_liuliang
  • Spring構成を学習するときに使用される2つの構成方法なので、以下を記録してください。興味がある場合は、ご覧ください。

1.XML構成フォームVS注釈構成フォーム

XML:

  1. SpringConfig.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.xsd">
       // 定义Bean信息
       <bean id="user" class="cn.liuliang.studysoundcodespring.entity.User">
           <property name="name" value="j3-liuliang"/>
           <property name="age" value="18"/>
       </bean>
    </beans>
    
  2. テストクラスを書く

    @Test
    public void test02(){
           
           
        // 根据xml配置文件获取应用上下文
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("SpringConfig.xml");
        // 根据class获取相关bean
        User bean = applicationContext.getBean(User.class);
        System.out.println(bean);
    }
    
  3. 結果:

    ここに写真の説明を挿入

注解

  1. 注釈構成クラスを定義する

    @Configuration //声明该类是配置类
    @ComponentScan("cn.liuliang.studysoundcodespring") //包扫描
    public class SpringConfig {
           
           
    /**
      * 向容器中主入一个bean组件
      * @return
      */
     @Bean
     public User user(){
           
           
         // 通过new创建对象,放入容器中
         return new User("j3-liuliang",28);
     }
    }
    
  2. テストを書く

    @Test
    public void test01(){
           
           
    // 注解配置类应用上下文
    ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
    User user = applicationContext.getBean(User.class);
    System.out.println(user);
    }
    
  3. 結果

    ここに写真の説明を挿入

注:@Beanの形式で使用される場合、Beanのデフォルト名はメソッド名です。@ Bean(value = "bean's name")の場合、Bean名が指定されます。

1.1長所と短所の比較

注解

利点

  • 簡素化された構成
  • 使いやすく、開発効率を向上

不利益

  • サードパーティのjarパッケージのクラスを構成できません

XML

利点

  • クラス間の結合が緩く、拡張と交換が簡単
  • オブジェクト間の関係が一目でわかります

不利益

  • 構成は面倒であり、追加の構成を維持する必要があります
  • タイプは安全ではありません、コンパイルは検証に役立ちません、エラーは実行時に発見されます

上記の比較は比較的単純で、(技術に対して責任ある態度で)十分ではないと思いますが、私自身の技術的能力は限られており、より包括的な比較結果を要約することはできません!

下面是我在CSDN上看到的一位博主对注解与XML配置的比较,对比很全面元のリンク

ここに写真の説明を挿入

注釈とXML構成の違い

注:これは一種分散式のメタデータであり、ソースコード紧绑定です。

xml:は一種集中式のメタデータであり、ソースコード无绑定です。

したがって、注釈とXMLの選択は、分散型または集中型、ソースコードバインディング/バインディングなしの2つの観点から見ることができます

注釈のデメリット:

1.たとえば、春の注釈を使用すると、多くの友人が注釈が多くのクラスに散在していることに気付くでしょう。これは管理と保守が容易ではありません。これには実際にはツールの助けが必要です。現在、この点で非常に優れたパフォーマンスを発揮するIDEAを使用しています。もちろん今はSpringのSTSもありますが、これも優れています。ツールを使用すると、この問題を解決できます。

2.注釈はソースコードにバインドされているため、ソースコードを変更して、注釈をオン/オフにする必要があります。変更する場合は、ソースコードを変更する必要があります。これにはこの問題があるため、この場合でも、データソースなどのXML構成方法を使用します。 ;

3.注釈のもう1つの欠点は柔軟性です。たとえば、以前に翻訳されたSpring Framework 4.0 M1:WebSocketのサポート;複雑なロジックの実装に関しては、XMLがなくてもより強力です;以前のjpa Beanのように、注釈が使用されるかどうかにかかわらず検証、すべてまたはなし。この状況に遭遇するのは苦痛です。

4.もう1つは、規則が構成よりも大きいことですが、複雑な状況を処理する場合は、注釈が必要です(Springのデータ検証/データバインディング注釈は非常に強力です)。

5. XMLは、データベース接続プールなどのトランザクション構成などの一般的な構成に適しています。つまり、一般的な構成は分散化ではなく集中化されています。たとえば、多くの人が@Transactionalを使用してトランザクションを構成します。多くの場合、これは一種のあまりにも分散化された構成。

6. XML方式は、必要なコンポーネントと不要なコンポーネントなど、スケーラビリティと複雑さの維持の点でアノテーションよりもはるかに優れています。この状況では、ルールを作成するのが難しいか、まったくないため、アノテーションのスキャンメカニズムは比較的劣っています。書かれるかもしれません

注釈の利点:

1. XML構成は冗長な場合があります。現時点では、jpaエンティティマッピングなどの注釈の方が適している場合があります。springmvcデータバインディングなどの一定のメタデータを処理する場合、注釈はXMLよりもはるかに便利な場合があります。 xmlを使用してさらにコードを作成する場合。

2.注釈の最大の利点は、XML構成が簡素化されることです。実際、ほとんどの注釈は決定後にほとんど変更されないため、一部の中小規模のプロジェクトで注釈を使用すると開発効率が向上するため、黒字にする必要はありません。

3. XMLに対する注釈のもう1つの利点は、タイプセーフであるということです。XMLは実行時にのみ問題を見つけることができます。

注釈であろうとXMLであろうと、オールオアナッシングスキームを変更する特別なニーズを制御するために、いくつかの切り替え/置換メカニズムが必要です。

別の呼びかけは、合意が構成よりも大きいということです。このソリューションは、シナリオによっては最適かもしれませんが、複雑な状況では問題を解決できない可能性があるため、現時点では注釈も適切なソリューションです。特にspringmvcを使用すると、メリットを実感できます。

アノテーションとXMLのどちらを使用するかに関係なく、実行することはそれらのことですが、アノテーションとXMLは万能ではないため、ニーズを満たし、より簡単な方法で問題を解決できます。

技術的な問題について話し合うのと同じように、多くの人は物の質を判断する強い個人的な好みを持っています。このような話し合いには意味がありません。私たちの最終的な目標は問題を解決することなので、問題を解決できるかどうかを調査する必要があります。 、より理解しやすい方法で問題を解決できますか?問題をより簡単に解決できますか?

合意が構成、注釈、またはXML構成よりも大きいかどうかに関係なく、最適なものはありません。適切なシナリオで適切なソリューションを選択することが重要です。設計パターンと同じように、特定の環境で再発する特定の問題に対する実証済みのソリューションです。

結びの言葉

  • ブロガーはあまり知識がないので、必然的に間違いがあります。間違いや偏見を見つけたら、メッセージを残して指摘してください。訂正させていただきます。
  • 記事が悪くないと思うなら、転送、共有、いいね、コメントはあなたの最大の励ましです。
  • 読んでいただきありがとうございます、ようこそ、そしてご清聴ありがとうございました。

ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/qq_40399646/article/details/108905977