Các bạn đã biết cách khởi tạo bean trong Spring container sử dụng tập tin XML trong bài viết trước. Ngoài cách này ra, Spring còn hỗ trợ chúng ta khởi tạo các bean bằng cách sử dụng annotation @Configuration trong code Java. Hãy xem làm thế nào để khởi tạo bean trong Spring container sử dụng annotation @Configuration trong bài viết này nhé các bạn.
Đầu tiên, mình sẽ tạo một Maven project như sau:
Spring dependency:
1 2 3 4 5 |
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>6.0.2</version> </dependency> |
Bây giờ, mình sẽ thêm một đối tượng là HelloWorld trong package com.huongdanjava.springconfiguration để nó có thể in ra một message là “Hello World” như sau:
1 2 3 4 5 6 7 8 |
package com.huongdanjava.springconfiguration; public class HelloWorld { public void print() { System.out.print("Hello World!"); } } |
Để có thể khai báo đối tượng HelloWorld này trong Spring container sử dụng annotation @Configuration, các bạn hãy tạo mới một class sử dụng annotation @Configuration như sau nhé:
1 2 3 4 5 6 7 8 |
package com.huongdanjava.springconfiguration; import org.springframework.context.annotation.Configuration; @Configuration public class ApplicationConfiguration { } |
rồi khai báo đối tượng HelloWorld như là một bean trong Spring container sử dụng annotation @Bean như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
package com.huongdanjava.springconfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class ApplicationConfiguration { @Bean public HelloWorld helloWorld() { return new HelloWorld(); } } |
OK, vậy là chúng ta đã khai báo thành công bean HelloWorld trong Spring container, id của bean chính là tên của phương thức nhé các bạn.
Bây giờ, để gọi bean này và in message “Hello World“, các bạn có thể code như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
package com.huongdanjava.springconfiguration; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Application { public static void main(String[] args) { ApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfiguration.class); HelloWorld helloWorld = (HelloWorld) context.getBean("helloWorld"); helloWorld.print(); } } |
Các bạn lưu ý là ở đây chúng ta sử dụng một implementation khác của ApplicationContext là AnnotationConfigApplicationContext nhé các bạn!
Kết quả:
2115
Cho e hỏi tại sao phải tạo thêm 1 class mới (trong vd là ApplicationConfiguration). E có thử không tạo class ApplicationConfiguration, chỉ có class HelloWorld thôi, sau đó thêm thẳng 2 annotation Configuration và Bean vào class HelloWorld thì bị lỗi
Khanh Nguyen
Cách làm việc của Spring là như vậy mà em muốn đổi nó theo ý của mình thì làm sao chạy được nhỉ?
namns
đây là class khai báo việc bạn đăng kí 1 đối tượng bean vào container của spring, bạn bỏ bước khai báo để cấp quyền được tồn tại của đối tượng thì đương nhiên là k thể gọi nó trong project