Spring - Các khái niệm và ví dụ nhanh

Bài viết gốc xem tại : https://www.logicbig.com/tutorials/spring-framework/spring-core/quick-start.html

Spring Framework là gì?

1, DI (Dependency Injection): Phiên bản của các đối tượng được đưa vào trường của Đối tượng mục tiêu (nơi lý tưởng nhất là trường phải là kiểu giao diện) thông qua Constructors / Setters thay vì Đối tượng đích tự tạo ra các phiên bản. Do đó, cách tiếp cận này cho phép các đối tượng ứng dụng là POJO có thể được sử dụng trong các môi trường khác nhau và với các cách triển khai khác nhau.

2, Vùng chứa IOC (Inversion of Control): Mã khung gọi mã ứng dụng trong một hoạt động và yêu cầu thông tin cụ thể của ứng dụng thay vì ứng dụng gọi trực tiếp mã Khung, do đó điều khiển bị đảo ngược. Một ví dụ về IOC là Mẫu mẫu thông qua phân loại phụ. Spring IOC cũng cung cấp IOC dựa trên chú thích.

3, AOP (Lập trình hướng theo khía cạnh ): Điều này cho phép tách các mối quan tâm xuyên suốt bằng cách thêm các hành vi (khía cạnh) vào mã ứng dụng thay vì ứng dụng liên quan đến chính những mối quan tâm đó. Điều này cho phép ứng dụng trở thành mô-đun thay vì trộn các mối quan tâm khác nhau vào một nơi duy nhất. Các ví dụ là Quản lý giao dịch, ghi nhật ký, v.v.

4, Thay thế nhẹ cho Java EE: Spring là giải pháp nhẹ để xây dựng ứng dụng doanh nghiệp bằng POJO. Nó có thể được sử dụng trong thùng chứa servlet (ví dụ: máy chủ Tomcat) và không yêu cầu máy chủ Ứng dụng.

Spring bean là gì?

 Bean là một đối tượng được khởi tạo, lắp ráp và quản lý bởi một vùng chứa Spring IoC. Ví dụ: các bean này được tạo bằng siêu dữ liệu cấu hình mà bạn cung cấp cho vùng chứa ở dạng định nghĩa XML.

Thí d

Chúng tôi sẽ đưa ra một ví dụ nhanh từng bước với các giải thích ngắn gọn để chứng minh cách triển khai cụ thể của một giao diện có thể được đưa vào ứng dụng khách bằng Spring Framework.

Tạo Beans

public interface HelloWorldService {

    void sayHi(String name);

}


 

public class HelloWorldServiceImpl implements HelloWorldService {

 

    public void sayHi(String message) {

        System.out.println(message);

    }

}


 

public class HelloWorldServiceClient {

 

    @Autowired

    private HelloWorldService helloWorld;

 

    public void showMessage() {

        helloWorld.sayHi("Hello world!");

    }

}

 

@Autowosystem là gì?

Trong đoạn mã trên, chúng tôi đã sử dụng chú thích @Autowiredtrong lớp HelloWorldServiceClient. Chú thích này cho vùng chứa Spring biết nơi thực hiện chèn phụ thuộc. Chúng ta phải đăng ký phiên bản HelloWorldServiceClient dưới dạng bean để điều đó xảy ra. Chúng tôi cũng phải đăng ký HelloWorldServiceImpl dưới dạng bean. Tiếp theo, chúng ta sẽ xem cách chúng ta có thể làm điều đó bằng cách sử dụng @Configuration trên lớp cấu hình Java.

 

Spring Configuration and Starting the Container

Trong ví dụ này, lớp AppRunner, chịu trách nhiệm xác định và nối dây các phụ thuộc. Nói cách khác, đó là một lớp cấu hình cụ thể của Spring. Ví dụ của chúng tôi trình bày Cấu hình dựa trên Java là sự thay thế cho cấu hình dựa trên XML. Lớp tương tự cũng chịu trách nhiệm khởi động vùng chứa Spring từ phương thức chính.

@Configuration
public class AppRunner {

    @Bean
    public HelloWorldService createHelloWorldService() {
    }

    @Bean
    public HelloWorldServiceClient createClient() {
        return new HelloWorldServiceClient();
    }

    public static void main(String... strings) {
        AnnotationConfigApplicationContext context =
                                new AnnotationConfigApplicationContext(AppRunner.class);
        HelloWorldServiceClient bean = context.getBean(HelloWorldServiceClient.class);
        bean.showMessage();
    }

}

Các chú thích @Configuration và @Bean

Chúng tôi đã sử dụng chú thích @Configurationđể cho vùng chứa biết rằng các bean được xác định trong đó AppRunner. Các phương thức trả về các thể hiện bean được chú thích bằng @Bean, đây là một chỉ thị khác cho vùng chứa để nó biết những đối tượng nào nên được đăng ký dưới dạng bean.

 

AnnotationConfigApplicationContext là gì?

Lớp này thực hiện ApplicationContext. Vùng chứa nhận hướng dẫn về những đối tượng nào cần khởi tạo, cấu hình và lắp ráp bằng cách đọc siêu dữ liệu cấu hình.

Trong ví dụ của chúng tôi, chúng tôi đã chuyển lớp java cấu hình của chúng tôi cho hàm AnnotationConfigApplicationContexttạo. Lớp này cũng thực hiện AnnotationConfigRegistry, vì vậy nó chấp nhận các lớp được chú thích làm đầu vào.

Sau khi khởi tạo, một đối tượng ngữ cảnh ứng dụng mùa xuân đại diện cho tham chiếu thời gian chạy của vùng chứa mùa xuân. Sử dụng đối tượng ngữ cảnh, chúng ta có thể truy cập các bean đã đăng ký. Nó ở chế độ chỉ đọc nhưng có thể được làm mới / tải lại bất cứ khi nào cần.

 

ng dng đang chy

Chạy lớp AppRunner sẽ tạo ra kết quả sau:

Hello world!