Anda bisa menggunakan @Bean
untuk membuat kelas pihak ketiga yang ada tersedia untuk konteks aplikasi kerangka kerja Spring Anda.
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/view/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
Dengan menggunakan @Bean
anotasi, Anda bisa membungkus kelas pihak ketiga (mungkin tidak memiliki @Component
dan mungkin tidak menggunakan Spring), sebagai kacang Spring. Dan kemudian setelah dibungkus menggunakan @Bean
, itu sebagai objek tunggal dan tersedia dalam konteks aplikasi kerangka kerja Spring Anda. Anda sekarang dapat dengan mudah membagikan / menggunakan kembali kacang ini di aplikasi Anda menggunakan injeksi ketergantungan dan@Autowired
.
Jadi pikirkan @Bean
anotasi itu adalah pembungkus / adaptor untuk kelas pihak ketiga. Anda ingin membuat kelas pihak ketiga tersedia untuk konteks aplikasi kerangka kerja Spring Anda.
Dengan menggunakan @Bean
kode di atas, saya secara eksplisit mendeklarasikan kacang tunggal karena di dalam metode ini, saya secara eksplisit membuat objek menggunakan new
kata kunci. Saya juga secara manual memanggil metode setter dari kelas yang diberikan. Jadi saya bisa mengubah nilai bidang awalan. Jadi pekerjaan manual ini disebut sebagai penciptaan eksplisit. Jika saya menggunakan @Component
untuk kelas yang sama, kacang yang terdaftar di wadah Spring akan memiliki nilai default untuk bidang awalan.
Di sisi lain, ketika kita membubuhi keterangan kelas dengan @Component
, tidak perlu bagi kita untuk menggunakan new
kata kunci secara manual . Ini ditangani secara otomatis oleh Spring.