SpringBoot アノテーションの知識ポイントは何ですか?

WBOY
リリース: 2023-05-15 16:40:06
転載
901 人が閲覧しました

1. アノテーションのリスト

@SpringBootApplication: @ComponentScan、@Configuration、および @EnableAutoConfiguration アノテーションが含まれます。その中で、@ComponentScan を使用すると、Spring Boot が Configuration クラスをスキャンしてプログラム コンテキストに追加できるようになります。

@構成は Spring の XML 構成ファイルと同等であり、Java コードを使用して型安全性をチェックできます。

@EnableAutoConfiguration 自動構成。

@ComponentScan コンポーネント スキャンでは、一部の Bean を自動的に検出して組み立てることができます。

@コンポーネントは、CommandLineRunner とともに使用して、プログラムの開始後にいくつかの基本的なタスクを実行できます。

@RestController アノテーションは @Controller と @ResponseBody のコレクションであり、これがコントローラー Bean であることを示し、関数の戻り値は REST スタイルの HTTP 応答本文に直接埋められます。コントローラ。

#@Autowired 自動インポート。

@PathVariable はパラメータを取得します。

@JsonBackReference は、ネストされた外部リンクの問題を解決します。

@RepositoryRestResourcepublic は spring-boot-starter-data-rest とともに使用されます。

2. アノテーションの詳細説明

@SpringBootApplication: Spring Boot が必要なプログラムを自動的に設定することを宣言します。この設定は、@Configuration、@EnableAutoConfiguration、@ と同等です。 ComponentScan の 3 つの構成。

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication //

@Configuration

# と同じ##@EnableAutoConfiguration

@ComponentScanpublic クラス Application {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

@ResponseBody: このメソッドの戻り結果が HTTP レスポンスボディに直接書き込まれることを示します。一般にデータを非同期で取得する場合に使用され、 RESTful API を構築します。 @RequestMapping を使用すると、通常、戻り値はジャンプ パスとして解析されますが、@responsebody を追加すると、戻り値はジャンプ パスとして解析されず、HTTP 応答本文に直接書き込まれます。たとえば、jsonデータを非同期で取得し、@responsebodyを付けると、jsonデータが直接返されます。このアノテーションは通常、@RequestMapping と組み合わせて使用​​されます。サンプルコード:

@RequestMapping("/test")@ResponseBodypublic String test(){ return"ok";}

@Controller: Spring プロジェクトでコントローラー クラスを定義するために使用されます。コントローラーは、ユーザーによって送信された URL リクエストを対応するサービス インターフェイス (サービス層) に転送する役割を果たします。通常、このアノテーションはクラス内にあり、通常、メソッドには @RequestMapping アノテーションが伴う必要があります。サンプル コード:

@Controller@RequestMapping("/demoInfo") public class DemoController {

@Autowired private DemoInfoService demoInfoService;

@RequestMapping("/hello") public String hello(Mapmap){ System.out.println("DemoController.hello()");

map.put("hello","from TemplateController.helloHtml"

);

//レンダリングと表示には hello.html または hello.ftl テンプレートを使用します。

return"/hello";

}

}

@RestController: @ResponseBody と @Controller のコレクションであるコントロール層コンポーネント (ストラット内のアクションなど) に注釈を付けるために使用されます。サンプルコード:

import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController; @RestController@RequestMapping(“/demoInfo2”)publicclass DemoController2 {

@RequestMapping("/test") public String test(){ return"ok";

}

}

@RequestMapping: ルーティング情報を提供します。 URL をコントローラーの特定の関数にマッピングする責任を負います。

@EnableAutoConfiguration: Spring Boot 自動構成 (自動構成): 追加した jar 依存関係に基づいて Spring アプリケーションを自動的に構成してみます。たとえば、HSQLDB がクラスパス上に存在し、データベース接続 Bean を手動で構成していない場合、インメモリ データベースが自動的に構成されます。 @EnableAutoConfiguration または @SpringBootApplication アノテーションを @Configuration クラスに追加して、自動を選択できます。必要のない特定の自動構成クラスが適用されていることがわかった場合は、 @EnableAutoConfiguration アノテーションの除外属性を使用してそれらを無効にすることができます。私の個人的な理解では、@Component、@Controller、@Service などのアノテーションを持つクラスをスキャンして Bean として登録すると、@Configuration クラスを含むすべての Spring コンポーネントを自動的に収集できると考えています。 @ComponentScan アノテーションを使用して Bean を検索し、@Autowired アノテーションと組み合わせてインポートします。@Configuration クラスを含むすべての Spring コンポーネントを自動的に収集できます。多くの場合、@ComponentScan アノテーションを使用して Bean を検索し、@ と組み合わせますインポートする Autowired アノテーション。構成がない場合、Spring Boot はスタートアップ クラスが配置されているパッケージと、@Service、@Repository、およびその他のアノテーションを使用するサブパッケージ内のクラスをスキャンします。

@Configuration: 従来の XML 構成ファイルと同等。一部のサードパーティ ライブラリで XML ファイルを使用する必要がある場合でも、プロジェクトのメイン構成クラスとして @Configuration クラスを使用することをお勧めします。 XML 構成ファイルをロードするための ImportResource アノテーション。

@Import: 他の構成クラスをインポートするために使用されます。

@ImportResource: XML 構成ファイルをロードするために使用されます。

@Autowired: 依存 Bean を自動的にインポートします

@Service: 通常、サービス層のコンポーネントを変更するために使用されます

@Repository: @Repository アノテーションを使用して、DAO またはリポジトリは例外変換を提供し、このアノテーションによって変更された DAO またはリポジトリ クラスは ComponentScan によって検出および構成され、それらに対して XML 構成アイテムを提供する必要はありません。

@Bean: @Bean でマークされたメソッドは、XML で構成された Bean と同等です。

@Value: Spring boot application.properties で設定されたプロパティの値を注入します。サンプルコード:

@Value(value = "#{message}")private String message;

@Inject: デフォルトの @Autowired と同等ですが、必須の属性はありません;

@コンポーネント: 一般にコンポーネントを指します。コンポーネントの分類が難しい場合は、この注釈を使用してコンポーネントに注釈を付けることができます。

@Bean: XML と同等で、クラスではなくメソッドの上に配置されます。つまり、Bean を生成し、管理のために Spring に渡します。

@AutoWired: 依存する Bean を自動的にインポートします。 byType メソッド。構成された Bean を使用して、プロパティとメソッドのアセンブリを完了します。クラス メンバー変数、メソッド、およびコンストラクターに注釈を付けて、自動アセンブリを完了できます。 (required=false) を追加すると、Bean が見つからない場合でもエラーは報告されません。

@Qualifier: 同じ種類の Bean が複数ある場合は、@Qualifier("name") を使用して指定できます。 @Autowired とともに使用されます。 @Qualifier 修飾記述子は、名前に基づいて注入できることに加えて、候補の選択方法をより詳細に制御できます。具体的な使用法は次のとおりです:

@Autowired@Qualifier(value = “ demoInfoService”)private DemoInfoService DemonInfoService ;

@Resource(name="name",type="type"): 括弧内のコンテンツがない場合は、デフォルトで byName になります。 @Autowired を使用して同様のことを行います。

3. JPA アノテーション

@Entity: @Table(name=""): これがエンティティ クラスであることを示します。 jpaではこの2つのアノテーションを併用するのが一般的ですが、テーブル名とエンティティクラス名が同じ場合は@Tableを省略することも可能です。クラス。サブクラスは親クラスの属性を継承できます。

@NoRepositoryBean: 通常、親クラスのリポジトリとして使用されます。このアノテーションを使用すると、Spring はリポジトリをインスタンス化しません。

@Column: フィールド名が列名と同じ場合は省略できます。

@Id: この属性が主キーであることを示します。

@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = “repair_seq”): 主キー生成戦略がシーケンスであることを示します (Auto、IDENTITY、ネイティブなどにすることができます。Auto は、次の間で切り替えることができることを意味します)複数のデータベース)、指定されたシーケンスの名前はrepair_seqです。

@SequenceGeneretor(name = “repair_seq”, sequenceName = “seq_repair”, AllocationSize = 1): name は簡単に使用できるシーケンスの名前、sequenceName はデータベースのシーケンス名、および 2 つの名前一貫性を保つことができます。

@Transient: この属性がデータベース テーブル内のフィールドへのマッピングではないことを示し、ORM フレームワークはこの属性を無視します。属性がデータベース テーブルのフィールド マッピングではない場合は、@Transient としてマークする必要があります。それ以外の場合、ORM フレームワークはデフォルトで @Basic アノテーションを使用します。 @Basic(fetch=FetchType.LAZY): タグはエンティティ属性のロード方法を指定できます

@JsonIgnore: この機能は、JSON シリアル化中に Java Bean の一部のプロパティを無視します。シリアル化と逆シリアル化の両方が影響を受けます。

@JoinColumn(name="loginId"): 1 対 1: 別のテーブルを指すこのテーブル内の外部キー。 1 対多: このテーブルを指す別のテーブルの外部キー。

@OneToOne、@OneToMany、@ManyToOne: Hibernate 設定ファイルの 1 対 1、1 対多、および多対 1 に対応します。

4. SpringMVC 関連のメモ

@RequestMapping: @RequestMapping("/path") は、コントローラーがすべての "/path" URL リクエストを処理することを示します。 RequestMapping は、リクエスト アドレス マッピングを処理するために使用されるアノテーションであり、クラスまたはメソッドで使用できます。クラスで使用すると、リクエストに応答するクラス内のすべてのメソッドがこのアドレスを親パスとして使用することを意味します。このアノテーションには 6 つの属性があります:

params: 指定されたリクエストは、このメソッドで処理される前に特定のパラメータ値を含む必要があります。 headers: このメソッドがリクエストを処理するには、指定されたリクエストに特定の指定されたヘッダー値が含まれている必要があります。値: リクエストの実際のアドレスを指定します。指定されたアドレスは URI テンプレートにすることができます。 モードメソッド: GET、POST、PUT、DELETE などのリクエストのメソッドタイプを指定します。 消費: 送信コンテンツタイプを指定します ( Content-Type) は、application/ json、text/html などのリクエストを処理するためのものです。生成: 返されるコンテンツ タイプを指定します。リクエスト ヘッダーの (Accept) タイプに指定されたタイプが含まれている場合にのみ、それが返されます

@RequestParam: メソッドのパラメータの前で使用されます。 @RequestParamString a =request.getParameter("a")。

@PathVariable: パス変数。例:

RequestMapping("user/get/mac/{macAddress}") public String getByMacAddress(@PathVariable String macAddress){ //何かをします;}

パラメータと名前をカーリーで記述します括弧 同じである必要があります。

5. グローバル例外処理

@ControllerAdvice: @Component が含まれます。スキャンできます。例外を一律に処理します。

@ExceptionHandler (Exception.class): この例外が発生したときに次のメソッドが実行されることを示すためにメソッドで使用されます。

以上がSpringBoot アノテーションの知識ポイントは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート