Thursday, February 28, 2019

Spring Bean Annotations





1. Overview
Dalam artikel ini, kita akan membahas anotasi dari Spring Beans yang paling umum digunakan untuk mendefinisikan berbagai jenis beans.

Ada beberapa cara untuk mengkonfigurasi Beans dalam Spring container. Kita dapat mendeklarasikan mereka menggunakan konfigurasi di XML. Kita juga dapat mendeklarasi beans menggunakan anotasi @Bean dalam configuration class.

Atau kita dapat menandai class dengan salah satu anotasi dari paket org.springframework.stereotype dan menyerahkan sisanya ke Componen Scan.

2. Component Scanning
Spring dapat secara otomatis memindai package dari beans jika component scanning diaktifkan.

@ComponentScan berfungsi untuk mengonfigurasi class-class yang akan di scanning yang didalamnya terdapat anotasi spring beans. Kita dapat menentukan nama base package dengan salah satu parameter anotasinya yaitu basePackages:

@Configuration
@ComponentScan(basePackages = "com.farizfadian.annotations")
class BookFactoryConfig {}

Jika tidak ada @ComponentScan yang ditulis, scanning akan dilakukan dari package yang sama pada class yang terdapat anotasi @ComponentScan.

@ComponentScan memanfaatkan fitur anotasi berulang Java 8, yang berarti kita dapat menandai class dengannya beberapa kali:

@Configuration
@ComponentScan(basePackages = "com.farizfadian.annotations")
@ComponentScan(basePackageClasses = BookFactoryConfig.class)
class BookFactoryConfig {}

Atau, kita dapat menggunakan @ComponentScans untuk menentukan beberapa konfigurasi @ComponentScan:

@Configuration
@ComponentScans({
  @ComponentScan(basePackages = "com.farizfadian.annotations"),
  @ComponentScan(basePackageClasses = BookFactoryConfig.class)
})
class BookFactoryConfig {}

Saat menggunakan konfigurasi XML, konfigurasi untuk pemindaian komponen juga mudah:

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


3. @Component
@Component adalah anotasi pada tingkat class. Selama pemindaian komponen, Spring Framework secara otomatis mendeteksi kelas yang dijelaskan dengan @Component.

Sebagai contoh:

@Component
class BookUtility {
     // ...
}

Secara default, instance beans dari class ini memiliki nama yang sama dengan nama class yang menggunakan inisial dengan huruf kecil. Selain itu, kita dapat menentukan anotasi yang lain yang merupakan nilai opsional dari anotasi ini.


Karena @Repository, @Service, @Configuration, dan @Controller semuanya adalah meta-annotations dari @Component, mereka berbagi perilaku penamaan bean yang sama. Selain itu, Spring secara otomatis mengambilnya selama proses pemindaian komponen.
Previous Post
Next Post

0 komentar: