SpringBootの基本的なアノテーション | ベトナムオフショア開発 【HACHINET SOFTWARE】

 2021年07月15日

SpringBootの基本的なアノテーション | ベトナムオフショア開発 【HACHINET SOFTWARE】

1. はじめに


プログラミングのためのSpring Framework、特に Spring Bootを使用するプロセスでは注釈(アノテーション)を見たことがあると思います。

これは、Javaソースコードのデータ情報を提供するためによく使用されます。

この記事では、最も一般的なアノテーションのいくつかを使用する方法を説明し、ご紹介させていただきたいと思います。

 

2. SpringBootのアノテーションについて必要な知識


2.1 Dependency Injection (DI)

これはデザインパターンであり、オブジェクト間の依存関係を減らして、後でコードを簡単に変更または拡張できるようにするコードの方法です。 オブジェクトは抽象クラスに依存する必要があり、それらの詳細なインスタンスはプログラムの実行時に注入されます。

2.2 Inversion of Control (IoC)

ただし、依存関係が多い(> 10)場合は、これらの依存関係に対して注入する必要があり、非常に時間がかかります。

数十の依存関係を注入する必要があるクラスを想像すると、非常に時間がかかります。

・ 通常の方法でオブジェクトを初期化する代わりに、制御の方向を逆にして、Springにオ

・ ブジェクトを作成させ、オブジェクトのメモリを管理します。「リバースコントロールコントロール」

・Spring Containerは、すべてのBeanが格納される場所です。

 

3. 基本的なアノテーション


AI技術にかかせないアノテーションとは | 運営からのお知らせ | 沖縄イノベーションマッチングサイト | インダストリンク

3.1 @Autowire

Spring Containerによって生成されたBeanを@Autowireで宣言されたクラスに自動的に埋め込みます。「依存性注入メカニズムによる」Springが実行を開始すると、アノテーションを使用してBeanを作成するクラスをスキャンするメカニズムが実行されます。同時に、それらのBeanに@Autowire宣言があるかどうかを検索し、対応するBeanを検索してそのBeanに注入します。

以下の3例で@Autowireを使用します。

//Properties
@Service
public class UserService {

        @Autowired
        UserRepository userRepository;

        @Autowired
        FacebookUtil facebookUtil;
}
//Setter
@Service
public class User {
    
        Private String name;
        
        @Autowire
        void setName(String name) {
            this.name = name;
        }
}
//Contructor
@Service
public class User {
    
        private long id;

        private String name;

        @Autowire
        void user(long id, String name) {
            this.id = id;
            this.name = name;
        }
}

3.2 @Configuration

@Configurationを使用して宣言されたクラスが、そのクラス内の1つ以上の@Beanメソッドを宣言することを示すために使用されます。

通常、プロジェクト内の構成Beanはこれらの構成クラスに配置します。 たとえば、Elasticsearch、Thymeleaf、多言語などを構成します。

3.3 @Bean

メソッドを強調表示すると、そのメソッドはBeanを生成し、Springコンテナによって管理されることをSpringに伝えます。

@ Beanアノテーションを使用するすべてのメソッドは、Configurationクラスに含まれている必要があります。

@Configuration

public class WebDriverConfig {

             @Bean

              public WebDriver Chrome() {

    System.setProperty("webdriver.chrome.driver",                                        

                               "/Downloads/chromedriver_linux64/chromedriver");  

                  return new ChromeDriver();

                       }

     }

3.4 @ComponentScan

このアノテーションを使用して、Springコンテナに次のように伝えます。「プロジェクト内のどのパッケージがアノテーションをスキャンしてBeanを作成するかを知っている必要があります」。

  @Configuration

  @ComponentScan(basePackages = "minhchuan.spring ")

        public class SpringComponentDemo {

                          // ...

          }

3.5 @Component

クラスがこのアノテーションを使用する場合は

「Beanとして作成され、それを必要とするすべてのクラスに注入されます」。

  • クラスが@Componentを使用しない場合、クラスを@Autowireすることはできません。
  • インジェクションのクラスを定義する場合は、Springが認識できるように、このアノテーションを使用してクラスにマークを付ける必要があります。

3.6 @Service

これは@Componentの特別なアノテーションです。 ビジネス、ロジックを処理するために使用されます。

     

    @Service

      public class UserService {

   @Autowired  

           UserRepository userRepository

    @Autowired

             FacebookUtil facebookUtil;  

               }

     }

3.7 @Repository

  • これも@Componentの特別なアノテーションです。 データベースを操作するために使用されます。
  • Jpaは、基本的な選択、更新、...機能を提供します。 追加のクエリ作成を適用できます。
  • 共通インターフェース:CrudRepository、JpaRepository、MongoRepositor、...

  @Repository

   public interface UserRepository extends JpaRepository <User, Integer> {

    //Query Creation

    }

3.8 @Scope

これは、SpringContainerの管理下で生成および破棄されるBeanのスコープです。 使用されているスコープとそのカスタマイズを使用してBeanが生成された場合:

  • シングルトン                               Beanが生成されたときのデフォルトのスコープになります。 つまり、「Beanは一度だけ作成され、コンテナで使用されます。 コンテナにはBeanが1つだけ存在します」。

   つまり、一度にコンテナが特定のBeanのみをロードすることを意味します。

  • プロトタイプ:シングルトンとは対照的に、多くのBeanが必要なので、このスコープを使用します。
  • リクエスト:BeanはユーザーのHTTPリクエストを通じて生成されます。 Webアプリケーションでのみ使用されます。
  • セッション:BeanはHTTPセッションを介して生成されます。

3.9 @ PropertySourceと@Value

@PropertySourceを使用して、システム構成プロパティファイルの場所をSpringに通知します。

また、@ Valueを使用して、プロパティファイルの値を取得します。

   @Configuration

    @Property

        Source("classpath:application.properties")

         public class

             MongoDBConfiguration {

    @Value("${mongodb.url}") private String url;

       @Value("${mongodb.db}")

       private String name;

      }

3.10 @Valid

データが正しいかどうかを確認するために使用されます。

 

  @Entity public class User {

      @Id

 @GeneratedValue private Long id;

  @NotEmpty

 

                  (message = "Please provide a name") private String name;

                 @NotEmpty(message = "Please provide a className")

                                      private String className; //... }

 

          @RestController public class UserController {

                @PostMapping("/users") Book newBook(

            Valid @RequestBody User user) {

     //...

            }}

この場合、ユーザーオブジェクトのプロパティ(name、className)がnullの場合、エラーが発生します。

3.11 @ReponseBody

コントローラのAPIが、ビューページをレンダリングするのではなく、JsonObjectオブジェクトをクライアントに返すことをユーザーに通知します。

 

4. まとめ


最近、Spring Bootはアノテーションを多用しており、各アノテーションには特定の機能があります。 アノテーションには@Ten_annotationが短いですが、魔法の機能があります。これらのアノテーションは、基本レベルおよびエンタープライズレベルのSpringブートアプリケーションを作成する上で重要な役割を果たします。

 

オフショア開発をご検討されている方々はぜひ一度ご相談ください。

※以下通り弊社の連絡先

アカウントマネージャー: クアン(日本語・英語対応可)

電話番号: (+84)2462 900 388

メール:  [email protected] 

お電話でのご相談/お申し込み等、お気軽にご連絡くださいませ。

 無料見積もりはこちらから▶