- vừa được xem lúc

Spring Boot In Action: Essential concepts for source code analysis.

0 0 17

Người đăng: logbasex

Theo Viblo Asia

1. BeanFactory (aka IOC container)

Đây là interface chịu trách nhiệm cho việc quản lý beans (Factory of Bean).

2. Bean

Bean về bản chất là object nhưng thay vì được quản lý bằng JVM thì sẽ được quản lý bằng Spring IOC container.

3. BeanDefinition

Đây là một interface mô tả bean instance cung cấp các phương thức lấy ra những thông tin cơ bản như beanClassName, scope... Mỗi lần Spring Boot read/scan bean thì sẽ khởi tạo một BeanDefinition object. Và khi chúng ta khai báo bean ở trong @Configuration class thì Spring sẽ khởi tạo một instance của ConfigurationClassBeanDefinition class (which is implements AnnotatedBeanDefinition extends BeanDefinition).

image.png

4. BeanDefinitionHolder

BeanDefinitionHolder = BeanDefinition + beanName + alias.

image.png

5. BeanDefinitionRegistry

Đây là một interface cung cấp các phương thức hỗ trợ việc đăng ký BeanDefinition với BeanFactory như registerBeanDefinition...

6. BeanFactoryPostProcessor

Đây là một interface cung cấp các phương thức giúp xử lý các công việc hậu kỳ sau khi bean được đăng ký. Ví dụ như resolves ${...} placeholders thông qua PropertySourcesPlaceholderConfigurer class.

@Value("${config.file.path}")
private String filePath;

7. BeanDefinitionRegistryPostProcessor

Đây là special BeanFactoryPostProcessor interface xử lý các việc liên quan đến BeanDefinition. Ví dụ như nếu bạn đánh dấu một class là @Configuration thì giai đoạn scan và register tất cả các phương thức được đánh dấu @Bean sẽ được thực hiện thông qua ConfigurationClassPostProcessor class (implements BeanDefinitionRegistryPostProcessor).

8. PostProcessorRegistrationDelegate

Vừa rồi mình mới giới thiệu các post-processor class cho bean, và PostProcessorRegistrationDelegate class là nơi mà tất cả trong số đó sẽ được gọi ra để sử dụng.

9. AnnotationConfigApplicationContext

Đây là một concrete class implements interface BeanDefinitionRegistry nên giống nhau về mặt chức năng nhưng để nói cụ thể hơn thì AnnotationConfigApplicationContext có 2 variables lần lượt là ClassPathBeanDefinitionScanner dùng để scan packages và convert classes thành BeanDefinitions, AnnotatedBeanDefinitionReader dùng để register BeanDefinitions.

public class AnnotationConfigApplicationContext extends GenericApplicationContext implements AnnotationConfigRegistry { private final AnnotatedBeanDefinitionReader reader; private final ClassPathBeanDefinitionScanner scanner;

image.png

===

Sẽ còn tiếp tục update...

Thanks for reading.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tổng hợp các bài hướng dẫn về Design Pattern - 23 mẫu cơ bản của GoF

Link bài viết gốc: https://gpcoder.com/4164-gioi-thieu-design-patterns/. Design Patterns là gì. Design Patterns không phải là ngôn ngữ cụ thể nào cả.

0 0 302

- vừa được xem lúc

Học Spring Boot bắt đầu từ đâu?

1. Giới thiệu Spring Boot. 1.1.

0 0 278

- vừa được xem lúc

Cần chuẩn bị gì để bắt đầu học Java

Cần chuẩn bị những gì để bắt đầu lập trình Java. 1.1. Cài JDK hay JRE.

0 0 51

- vừa được xem lúc

Sử dụng ModelMapper trong Spring Boot

Bài hôm nay sẽ là cách sử dụng thư viện ModelMapper để mapping qua lại giữa các object trong Spring nhé. Trang chủ của ModelMapper đây http://modelmapper.org/, đọc rất dễ hiểu dành cho các bạn muốn tìm hiểu sâu hơn. 1.

0 0 194

- vừa được xem lúc

[Java] 1 vài tip nhỏ khi sử dụng String hoặc Collection part 1

. Hello các bạn, hôm nay mình sẽ chia sẻ về mẹo check String null hay full space một cách tiện lợi. Mình sẽ sử dụng thư viện Lớp StringUtils download file jar để import vào thư viện tại (link).

0 0 71

- vừa được xem lúc

Deep Learning với Java - Tại sao không?

Muốn tìm hiểu về Machine Learning / Deep Learning nhưng với background là Java thì sẽ như thế nào và bắt đầu từ đâu? Để tìm được câu trả lời, hãy đọc bài viết này - có thể kỹ năng Java vốn có sẽ giúp bạn có những chuyến phiêu lưu thú vị. DJL là tên viết tắt của Deep Java Library - một thư viện mã ng

0 0 139