Spring Core – Phần 2: Spring Bean, Các scope trong Spring, Spring Bean Scope

Spring Core – Phần 2: Spring Bean, Các scope trong Spring, Spring Bean Scope

Khi nhắc tới Scope trong Spring người ta thường nói tới Bean Scope (Scope của các bean trong Spring).
Nó khác với scope trong JSP-Servlet mà tương tự bean scope trong JSF

1. Spring Bean là gì?

Spring Bean là các object trong Spring Framework, được khởi tạo thông qua Spring Container. Bất kỳ class Java POJO nào cũng có thể là Spring Bean nếu nó được cấu hình và khởi tạo thông qua container bằng việc cung cấp các thông tin cấu hình (các file config .xml, .properties..)

2. Các Bean Scope trong Spring

Có 5 scope được định nghĩa cho Spring Bean:

  • Singleton: Chỉ duy nhất một thể hiện của bean sẽ được tạo cho mỗi container. Đây là scope mặc định cho spring bean. Khi sử dụng scope này cần chắc chắn rằng các bean không có các biến/thuộc tính được share.
  • Prototype: Một thể hiện của bean sẽ được tạo cho mỗi lần được yêu cầu(request)
  • Request: giống với prototype scope, tuy nhiên nó dùng cho ứng dụng web, một thể hiện của bean sẽ được tạo cho mỗi HTTP request.
  • Session: Mỗi thể hiện của bean sẽ được tạo cho mỗi HTTP Session
  • Global-Session: Được sử dụng để tạo global sesion bean cho các ứng dụng Portlet.

Trong 5 scope trên thì 3 scope cuối chỉ dùng trong ứng dụng web.

Spring Core - Phần 2: Spring Bean, Các scope trong Spring, Spring Bean Scope

Bạn cũng có thể tự định nghĩa các scope cho riêng mình, tuy nhiên các scope cung cấp bởi spring dùng tốt và đáp ứng hầu hết các trường hợp.

Để thay đổi Scope của các bean bạn có thể định nghĩa nó trong file xml, hoặc các annotation:

 

Okay! Done.

Các bạn còn thắc mắc chỗ nào thì comment nhé.

Tiếp theo mình sẽ nói về Dependency Injection trong Spring: https://stackjava.com/spring/spring-core-di-so-sanh-ci-si.html

References: https://avaldes.com/spring-bean-scopes-example/

4 thoughts on “Spring Core – Phần 2: Spring Bean, Các scope trong Spring, Spring Bean Scope

  • Cho em hỏi ngu tí ạ.

    Trong một project web có đoạn code như sau:
    Trong xml:

    Trong file java:
    ApplicationContext context = new ClassPathXmlApplicationContext(“applicationContext.xml”);
    HelloWorld obj = (HelloWorld) context.getBean(“helloWorld”);

    => Muốn tạo ra đối tượng bean này thì mình phải gọi đoạn code java phía trên phải không ạ?
    Chứ không phải gọi 1 lần đầu tiên là sau đó sẽ tự động sinh ra theo chu kỳ gì gì đó?

    Nhờ anh em chỉ giáo ạ!

    Thanks

    • Lần đầu tiên gọi đoạn code trên thì nó sẽ tạo ra 1 đối tượng bean nhé. Gọi lần thứ 2 thì tùy theo scope, nếu là singleton thì nó dùng lại thằng bean cũ chứ không tạo bean mới, nếu là prototype thì mỗi lần gọi sẽ tạo một bean mới

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

DMCA.com Protection Status stackjava.com