Skip to content

Instantly share code, notes, and snippets.

@tamata78
Last active March 31, 2020 06:13
Show Gist options
  • Save tamata78/0b199d9ec34d5590a4f4c9fa20745304 to your computer and use it in GitHub Desktop.
Save tamata78/0b199d9ec34d5590a4f4c9fa20745304 to your computer and use it in GitHub Desktop.
Spring Bootアノテーション

Spring Boot

基本設定

@SpringBootApplication
自身がSpring Bootアプリケーションであることを示すためにクラスに付与。

・@Configuration
・@EnableAutoConfiguration
・@ComponentScan 
これらを付与したのと同じ状態になる。

クラス

@Controller
Spring MVCのコントローラーに該当するクラスに付与。
付与することでSpirngのコンポーネントとして認識され、@Component(や@Repository、@Serviceなど)と同じくApplicationContextに登録され、DI対象のクラスとなる。
@Componentと基本的な意味合いは同じで、@Controller を付与した場合は @Component はつけない。

@Service
ビジネスロジックを記述するクラスに付与。ビジネスロジックはMVCモデルにおいてはMに当たるクラス。
@Component(や@Controllerや@Repositoryなど)と同じく、付与することでSpirngのコンポーネントとして認識され、ApplicationContextに登録されてDI対象のクラスとなる。

@Component
Spirngのコンポーネントとして定義させたいクラスに付与。
付与することでApplicationContextに登録され、DI対象のクラスとなる。
(対象にしたクラスは@Autowiredで指定できるようになる。)

@Repository
DBとのやり取りを行うDAOクラスに付与するアノテーション。@Component(や@Controller、@Serviceなど)と同じく、付与することでSpirngのコンポーネントとして認識され、ApplicationContextに登録されてDI対象のクラスとなる。

@Autowired
フィールド単位で付与する。
付与されたフィールドの型と合うBeanを自動的にDIしてくれる。型と合うBeanが複数ある場合は、@Qualifierアノテーションを使用して一意に識別させる。

DI設定

プロパティー設定

@PropertySource
クラスにプロパティファイルを読み込むアノテーション。@PropertySourceは引数にプロパティファイルのパスを指定。
読み込まれたプロパティはEnvironmentクラスを@Autowiredすることでクラス内で使用できる。@Configurationクラスと併用されることが多い。

@Configuration
設定を記述するクラスに付与。
このクラスは@Beanを付与したメソッドで構成される事になる。

@Bean
メソッド単位で付。@Configurationクラスに使用。
DataSourceやJdbcTemplateといったクラスが戻り値のメソッドに付与。

lombok

@Data
クラスに付与する。付与したクラスは対象クラス内のインスタンス変数に対してgetter/setterでアクセスすることが可能となる。

・@Getter
・@Setter
・@ToString
・@EqualsAndHashCode
・@RequiredArgsConstructor
これらを付与したのと同じ状態になる。

DB関連

@Transactional
クラスもしくはメソッド単位で付与。どちらにも付与した場合はメソッドが優先。DBを更新する際のトランザクションを管理するアノテーション。

@Entity
クラスに付与。自クラスがデータの入れ物となるEntityクラスであることを示す。トップレベルのクラスである必要がある。

@Table
Entityクラスと対応するデータベースのテーブル名を指定するために付与。

@GeneratedValue
主キーにユニークな値を自動で生成する方法を指定する。@Idを持つエンィティクラス、マップドスーパークラスのプライマリキーのフィールドまたはプロパティに適用する。

@Id
Entityクラス内で定義した主キーに付与する。プライマリキーのプロパティまたはフィールドであることを示す。

@Column
データベースのテーブルの行に対応させるEntityクラス内で定義した、テーブルのカラム名に相当するメンバ変数に付与。変数のデータ型や長さを指定する。

@Value
フィールド単位で付与する。付与されたフィールドは、プロパティファイルの設定値が代入される。

@Modifying
JpaRepositoryの更新系メソッドに付与する。@Queryアノテーションとセットで使う。

リクエスト関連

@PathVariable
URLに含まれた部分文字列をパラメータとして受け取るためのアノテーション。
@RequestMappingで指定するURLの一部を{}で囲み、コントローラの引数として@PathVariableのついた変数を指定することで受け取れるようになる。

@RequestMapping
メソッドに対してクライアントからリクエストのあったURLをマッピングさせる。

@RequestBody
クライアントから送られてくるボディの値を受け取るためのアノテーション。コントローラのメソッドの引数として指定。

@ResponseBody
Controllerクラスのメソッド単位で付与。戻り値をjson形式で返却することを意味する。@ResponseBodyを使う場合は@ResponseBodyは不要になる。

@RestController
@Controller & @ResponseBody と同義。

AOP関連

@After
メソッド単位で付与する。@Acpectが付与されたクラス内で使用。
@Afterが付与されたクラスは、execution内で定義された条件に当てはまる対象の処理(メソッドなど)の実行後に@Afterのついたメソッドが実行される。特定のメソッドの開始前や開始後にその共通的な処理を実行させるAOPにおいて使用される。

@AfterThrowing
AOPにおいて例外発生時のみ実行させるメソッドに付与。

@Before
メソッド単位で付与。@Acpectが付与されたクラス内で使用する。
@Beforeが付与されたクラスは、execution内で定義された条件に当てはまる対象の処理(メソッドなど)の実行前に@Beforeのついたメソッドが実行される。特定のメソッドの開始前や開始後にその共通的な処理を実行させるAOPにおいて使用される。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment