23

新しい Java Web アプリをゼロから始めています。

Spring Framework の経験はあまりありませんが、トランザクション管理などの機能のいくつかを使用したいと思っています。

一方、依存性注入には Guice がとても気に入っています。

Guice と Spring が連携できることはわかっています: http://www.jroller.com/mindcrime/entry/an_example_of_integrating_guice

しかし、アプリケーションの設計を開始する前に、誰かがそのアプローチに従って問題を経験したかどうかを知りたいと思っていました.

また、私が Guice で本当に気に入っているのは、XML 構成ファイルが必要なく、短くて読みやすい Java モジュールだけが必要なことです。Guice と同様に、Spring の XML 構成ファイルに代わるものはありますか?

4

5 に答える 5

15

エンタープライズ アプリケーションには、Spring だけで十分だと思います。

Spring も XML を必要としません!!! 最新の Spring アプリは、JavaConfig最小限の構成を使用します。Spring Boot Guidesを見てください。Spring アプリ全体では、XML をまったく使用できません。

Guice は素晴らしいですが、非常に限られています。Spring を使用すると、トランザクションと永続性を備えた Web アプリケーションまたは REST アプリケーションを非常に簡単かつ迅速に作成できます。Guice では、これはより複雑になります。

于 2014-01-10T23:03:43.033 に答える
12

始めたばかりの場合は、 https://github.com/spring-projects/spring-bootを使用することをお勧めします

優れた自動構成機能があり、定型コードの記述を節約できます。Tomcat が組み込まれているため、アプリケーション サーバーの使用から解放されることさえあります。たとえば、単純な MVC コントローラー (REST エンドポイントとして使用できる) を実装すると、次のようになります。

@Controller
@EnableAutoConfiguration
public class SampleController {

    @RequestMapping("/")
    @ResponseBody
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(SampleController.class, args);
    }
}

これで実行できますjava -jar your_package.jar。また、トランザクション管理、データベース統合なども利用できます。その他の例は、前述のリンク、特にhttps://github.com/spring-projects/spring-boot/tree/master/spring-boot-samplesディレクトリにあります。

于 2014-01-10T23:03:44.453 に答える
7

Spring には、現在 2 つのメジャー リリース用の Java ベースのアノテーション構成があります。XML を 1 行も書く必要はありません (web.xml でさえも!)。

私は Guice と Spring を使用してきました。DI を必要とする小規模なプロジェクトには Guice で十分ですが、Spring を MVC またはトランザクション サポートに使用する場合は、その DI も使用することをお勧めします。Guice には、Spring のような適切なプロファイル サポートもありません。ローカル開発、テスト環境、および運用用に個別の Bean が必要な場合は、モジュールを手動で切り替える必要があります。

于 2014-01-10T23:04:37.177 に答える
4

Google Guice には、ほぼすべての Spring 依存性注入の概念に対する 1:1 のマッピングがありますが、さらにいくつかの優れた機能があります。

1. すべて Java です。Google Guice には Java コードのすべての構成が含まれているため、xml 構成などを扱う必要はありません。

2. エラー メッセージの改善。Guice には、適切なスタック トレースをクリーンアップして再スローするインターセプターがあります。春はすべてを吐き出すだけです。

3. ジャスト イン タイム バインディング (または暗黙的バインディング)。これは、引数のないコンストラクターがある場合、追加のバインディングは必要なく、注入するだけであることを意味します! ゼロ引数のコンストラクターであるか、既に注入されている複数の引数を持つコンストラクターを注入しようとしている場合も同様で、追加の構成は必要ありません。また注入するだけ!

4. Eager/Lazy インジェクションSpring でインジェクトすると、何もインジェクトしないか、すべてをインジェクトすると表示されます。Guice には遅延注入するオプションがあります。これは、必要な依存関係グラフのサブセクションのみを作成することを意味します。これはいくつかのことを意味します - これらの奇妙な特別な Spring テスト ファイルは必要ありません。Guice はテストではるかに高速に挿入され、Eclipse で最小限のセットアップまたはセットアップなしで統合テストを実行できます。

5. 型によるバインディング。これは、名前でバインドする Spring とは異なります。Spring では、誤って 2 つのインスタンスを同じ名前にバインドすると、Spring は黙って失敗し、最後に来たバインディングを取得してさらに混乱します (yech)。Spring は「型によるバインド」オプションを提供しますが、だまされてはいけません。その基礎となる実装は依然として String です。

ソース: https://github.com/google/guice

于 2019-01-08T16:56:38.230 に答える