1. ホーム
  2. spring

[解決済み] クラスを@Componentでアノテートした場合、Spring BeanとSingletonということになるのでしょうか?

2022-07-01 03:23:33

質問

Springの初心者ですが、クラスのアノテーションについて質問があります。クラスにアノテーションを付ける際 @Component とアノテーションした場合、このクラスはSpring Beanになり、デフォルトでシングルトンになるということでしょうか?

どのように解決するのですか?

はい、その通りです。 @Component はSpringビーンであり、Singletonです。

クラスがサービス層に属している場合、アノテーションとして @Service でアノテーションするとよいでしょう。

しかし、これらのアノテーションを検出するためには、この行を applicationContext.xml :

<context:component-scan base-package="com.yourcompany" />

シングルトンについて - Spring Beanはデフォルトですべてシングルトンスコープになっています。唯一覚えておかなければならないのは、フィールド変数に状態を保存しないことです(依存関係のみを保持する必要があります)。これにより、アプリケーションはスレッドセーフになり、毎回Beanの新しいインスタンスが必要になることはありません。言い換えれば、あなたのBeanはステートレスです。