SpringBootアノテーションの詳細な分析

 1.グローバル例外処理

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

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

2.注釈のリスト   

@SpringBootApplication

@ ComponentScan、@ Configuration、および@EnableAutoConfigurationアノテーションが含まれています。

その中で@ComponentScanを使用すると、Spring BootでConfigurationクラスをスキャンして、プログラムコンテキストに追加できます。

@Configurationは、Spring のXML構成ファイル同等です。Javaコードを使用して、型の安全性を確認できます。

@EnableAutoConfiguration 自動構成。

@ComponentScan コンポーネントスキャンは、いくつかのBeanを自動的に検出してアセンブルできます。

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

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

@Autowiredは自動的にインポートされます。@PathVariableはパラメータを取得します。@JsonBackReferenceは、ネストされた外部リンクの問題を解決します。

@RepositoryRestResourcepublicは、spring-boot-starter-data-restと組み合わせて使用されます。

3.注釈の詳細な説明

@SpringBootApplicationSpring Bootが必要に応じてプログラムを自動的に構成することを宣言します。この構成は、@ Configuration、@ EnableAutoConfiguration、および@ComponentScanの3つの構成と同等です。

package com.example.myproject;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

@ResponseBody:このメソッドの戻り結果がHTTP応答本文に直接書き込まれることを示します。これは通常、データを非同期で取得するときに使用され、RESTfulAPIを構築するために使用されます。

@RequestMappingを使用した後、戻り値は通常ジャンプパスとして解析されます。@ responsebodyを追加した後、戻り結果はジャンプパスとして解析されず、HTTP応答本文に直接書き込まれます。

たとえば、jsonデータを非同期で取得するには、@ responsebodyを追加した後、jsonデータが直接返されます。

このアノテーションは通常、@ RequestMappingと組み合わせて使用​​されます。サンプルコード:

@RequestMapping(“/demo”)
@ResponseBody
public String test(){
    return”ok”;
}

@Controller:コントローラークラスを定義するために使用されます。Springプロジェクトでは、コントローラーは、ユーザーから送信されたURL要求を対応するサービスインターフェイス(サービスレイヤー)に転送する役割を果たします。

通常、このアノテーションはクラス内にあり、通常、メソッドはアノテーション@RequestMappingと連携する必要があります。

サンプルコード:

@Controller
@RequestMapping(“/demo”)
public class DemoController {
    @Autowired
    private DemoInfoService demoInfoService;

    @RequestMapping("/hello")
    public String hello(Map map){
        System.out.println("DemoController.hello()");
        map.put("hello","from TemplateController.helloHtml");
        return"/hello";
    }
}

@RestController:@ResponseBodyと@Controllerのコレクションであるコントロールレイヤーコンポーネント(Strutsのアクションなど)に注釈を付けるために使用されます。

package com.kfit.demo.web;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(“/demo2”)
publicclass DemoController2 {

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

@RequestMapping:コントローラー内の特定の関数へのURLのマッピングを担当するルーティング情報を提供します。

@EnableAutoConfiguration:Spring Bootの自動構成:追加したjarの依存関係に基づいてSpringアプリケーションを自動的に構成してみてください。

たとえば、HSQLDBがクラスパスに存在し、データベース接続Beanを手動で構成していない場合、メモリ内データベースを自動的に構成します。

@EnableAutoConfigurationまたは@SpringBootApplicationアノテーションを@Configurationクラスに追加して、自動構成を選択できます。

不要な特定の自動構成クラスが適用されていることがわかった場合は、@ EnableAutoConfigurationアノテーションの除外属性を使用してそれらを無効にすることができます。

@ComponentScan:このクラスがスキャンコンポーネントを自動的に検出することを示します。

個人的な理解は、@ Component、@ Controller、@ Serviceなどのアノテーションが付けられたクラスをスキャンし、それらをBeanとして登録することと同じです。これにより、@ Configurationクラスを含むすべてのSpringコンポーネントを自動的に収集できます。

@ComponentScanアノテーションを使用してBeanを検索し、@ Autowiredアノテーションと組み合わせてインポートすることがよくあります。@Configurationクラスを含むすべてのSpringコンポーネントを自動的に収集できます。

構成がない場合、Spring Bootは、スタートアップクラスが配置されているパッケージと、@ Service、@ Repository、およびその他のアノテーションが付いたサブパッケージの下のクラスをスキャンします。

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

@Import:他の構成クラスをインポートするために使用されます。@ImportResource:xml構成ファイルをロードするために使用されます。@Autowired:依存Beanを自動的にインポートします

@Service:通常、サービスレイヤーのコンポーネントを装飾するために使用されます

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

@Bean:@Beanアノテーションメソッドは、XMLで構成されたBeanと同等です。

@Value:Springブートapplication.propertiesで構成されたプロパティの値を挿入します。サンプルコード:

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

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

@Component:コンポーネント全般を指します。コンポーネントが適切に分類されていない場合は、このアノテーションを使用してマークを付けることができます。

@Bean:これは、クラスではなくメソッドの上に配置されたXMLと同等です。つまり、BeanはSpringによって生成および管理されます。

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

@Qualifier:同じタイプのBeanが複数ある場合は、@ Qualifier( "name")を使用して指定できます。@Autowiredと組み合わせて使用​​されます。@Qualifier修飾記述子は、名前に従って挿入できるだけでなく、候補の選択方法をよりきめ細かく制御するためにも使用できます。具体的な使用法は次のとおりです。

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

@Resource(name =” name”、type =” type”):角かっこで囲まれたコンテンツがない場合、デフォルトはbyNameです。@Autowiredで同様のことを行います。

4.jpaアノテーション

@Entity:@Table(name = ""):これがエンティティクラスであることを示します。通常、jpaで使用され、これら2つのアノテーションは通常一緒に使用されますが、テーブル名とエンティティクラス名が同じ場合は、@ Tableを省略できます。

@MappedSuperClass:親クラスであるエンティティを決定するために使用されます。親クラスのプロパティは、サブクラスに継承できます。

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

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

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

@GeneratedValue(strategy = GenerationType.SEQUENCE、generator = "repair_seq"):主キー生成戦略がシーケンスであることを示します(Auto、IDENTITY、nativeなど、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:休止状態の構成ファイル内の1対1、1多、および多対1に対応します。

5.springMVC関連の注釈

@RequestMapping:@RequestMapping( "/ path")は、コントローラーが "/ path"のすべてのURL要求を処理することを示します。

RequestMappingは、リクエストアドレスマッピングを処理するために使用されるアノテーションであり、クラスまたはメソッドで使用できます。

クラスで使用されるということは、要求に応答するクラス内のすべてのメソッドがこのアドレスを親パスとして使用することを意味します。注釈には6つの属性があります。

params:メソッドが処理される前に特定のパラメーター値をリクエストに含める必要があることを指定します。

ヘッダー:メソッドがリクエストを処理するには、指定されたリクエストに特定の指定されたヘッダー値が含まれている必要があります。

:リクエストの実際のアドレスを指定します。指定したアドレスはURIテンプレートモードにすることができます

method:リクエストのメソッドタイプ、GET、POST、PUT、DELETEなどを指定します。

消費:application / json、text / htmlなど、リクエストを処理するために送信されたコンテンツのコンテンツタイプ(Content-Type)を指定します。

生成:返されるコンテンツタイプを指定し、リクエストヘッダーの(Accept)タイプに指定されたタイプが含まれている場合にのみ返されます

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

@PathVariable:パス変数。パラメータは中括弧内の名前と同じである必要があります

RequestMapping(“user/get/mac/{macAddress}”)
public String getByMacAddress(@PathVariable String macAddress){
    //do something;
}

おすすめ

転載: blog.csdn.net/qq_38384994/article/details/105787799