しかし、私の同僚の何人かは反対する傾向がありました。 彼らが望むようにすべてを接続しようとしたとき、彼らは問題を抱えていました。 どのxmlファイルが必要かはわかりませんでした。 Springバージョン、それらと友達を作る方法に問題がありました(モジュール性にもかなり行きました:異なるバージョン番号の5または6つの異なるモジュールがあり、どれを使用するかを選択して理解することは不可能でした私に尋ねることなく)。 これらは邪魔な呼び出しでしたが、私はそれらに気づきませんでした。 もっとドキュメントが必要だと思うか、それらの人たちはただ愚かだと思いました。 この状況自体は典型的なものです。最も愛されておらず、使いにくいフレームワークのユーザーが「1つのファイルといくつかのパラメーターがあり、それほど難しくはない」という問題を解決します。少なくとも何かが機能するように、ファイルとパラメーターの魔法の組み合わせ。
私はまだ同じ組織で働いていますが、今では古いフレームワークのユーザーです。 犬の餌を与えた結果、私はサムを嫌い始めました(著者は自分自身- およそTransl。 )2009-2010年からいくつかの理由で、しかし主に春のために。 春は天気の良い日には悪ですが、他のプログラマーが使用するライブラリまたはAPIに含まれている場合、それは異なるレベルの悪です。ヒトラーと悪魔の愛の実りです。 SpringをAPIから外に出さないでください。
春はいくつかの理由で嫌いです、そして、私はそれらがリストされるべきであると感じました、なぜなら googleには明確な反論はありません。
- XMLでの構成。 私たちは、職業として、過去にXMLを残したと考えたいと思います。 彼は非常に冗長ですが、これらはまだ花です。 さらに重要なことは、XMLでプログラミングしたくないことです。 すべてのクラスをリンクすることは、アプリケーションの非常に重要な部分です。 あなたはXML開発者ではなく、Java開発者です。 言語としてのJavaの魅力の1つは、 コンパイル時の安全性です。 Springを持たないアプリケーションをコンパイルし、すべてが組み立てられ、接続され、準備ができていることを100%確信できます。 ただし、アプリケーションにSpringがある場合、Springを起動し、落下する前にBeanを初期化するまで30〜60秒待機します。 現代の世界では、これはおかしなことです。特に、コンテナをさまざまな方法でひねる必要がある統合テストの束が掛け合わされている場合はなおさらです。 ヒットリストの別の場所は、「これは、再コンパイルせずに実装を変更できることを意味します!」に値します。 だから誰もしません。 決して。
- 魔法。 通常は次のように発言します。「これで、注釈を使用してすべてを実行できます。 もうXMLはありません!」 XMLでプログラミングする必要がないときは素晴らしいですが、注釈は依然として魔法です。 アプリケーションを起動するまで、正しく接続するかどうかはわかりません。 そして、それでも正しく接続されているかどうかはわかりません。 接続されていることがわかります。 私は魔法が好きではありません。
- 他のSpringファイルのインポート。 現時点では、それは私を最も怒らせます。 Springファイルを小さなファイルに分割し、それらをモジュールに分散する傾向があることがわかりました。 JARをプッシュして、機能する何かに適したSpringファイルの適切な組み合わせ/順序/バージョンを見つけようとして2週間をやめました。 JARのSpringファイルは、悪いアイデアです。 恐ろしい。 依存するSpringファイルをJARに塗り付けるたびに、子はどこかで死にます。
- 複雑さ インタビューで候補者に「春の落とし穴は何ですか?」と尋ねると、彼は急な学習曲線を持っているとよく耳にします。 これが真実かどうかは別のトピックですが、Springが非常に複雑になり、独自のフレームワークであるSpring Bootを持っているという事実を強調したいと思います。 フレームワークのフレームワーク。 私たちは「フレームワークインセプション」に参加しています。レオナルドディカプリオは、長い間失われたJavaコードを見つけようとしています。彼は最終的に自殺する前に、XMLと注釈の層にどんどん深く入り込んでいます。
確かに、アプリケーションでSpringを正常に使用することは理論的には可能です。 これを見たことがありません。これは問題です。 私に関しては、彼が提供するすべての「グッズ」は、彼なしでかなり可能です。 Springのインタビューについて尋ねると、候補者は通常、次のように答えます。「Springを使用すると、コードがきれいになり、責任が分離され、テストに本当に役立ちます。」 一般的に、私が(特にテスト)の大ファンであるすべてのことですが、実際には、これらはSpringを使用した結果ではなく、優れたプログラミングの結果です。 初心者にとって、Springは依存関係の注入、モック、テストなどのアイデアを開発するための良い松葉杖かもしれませんが、実際にはSpringと直交しています。 TDDを使用する場合、コードにゲッターとセッターはありません-テストのために「ロックアップ」できるコンストラクターを介して依存関係を注入し、アプリケーションを一緒にバンドルするときに、よく忘れられている方法でオブジェクトを作成します-キーワード「新規」。 多くの場合、クラス「ApplicationContext」を作成します。このクラスは、すべてをリンクする役割を果たします。 それはきれいで、すべてがテスト可能で、コンパイル時の安全性があり、私のテストは非常に速く実行されます。