post-image

Hướng dẫn sử dụng @Autowired trong Spring (phần 1)

Spring Data JPA

1. Tổng quan

Bắt đầu với Spring 2.5, framework đã giới thiệu tính năng Dependency Injection theo hướng chú thích. Chú thích chính của tính năng này là @Autowired. Nó cho phép Spring resolveinject các collaborating beans vào bean của chúng ta.

>> Xem ngay Tài liệu Java Core giúp bạn “Nâng Cấp” kỹ năng lập trình

Trong hướng dẫn này, trước tiên chúng ta sẽ xem xét cách kích hoạt tính năng autowiring và các cách khác nhau để autowire bean. Sau đó, chúng ta sẽ nói về việc giải quyết xung đột bean bằng cách sử dụng chú thích @Qualifier, cũng như các trường hợp ngoại lệ tiềm năng.

2. Enabling @Autowired Annotations

Framework Spring cho phép tự động tiêm phụ thuộc. Nói cách khác bằng cách khai báo tất cả các phụ thuộc bean trong tệp cấu hình Spring. Spring container có thể tự động truyền tải các mối quan hệ giữa các collaborating beans . Điều này được gọi là Autowired Spring Bean.

Để sử dụng cấu hình dựa trên Java trong ứng dụng, hãy bật tính năng tiêm theo hướng chú thích để tải cấu hình Spring:

THAM KHẢO WEBSITE SPRING BOOT

@Configuration
@ComponentScan("com.baeldung.autowire.sample")
public class AppConfig {}Code language: PHP (php)

Ngoài ra, chú thích <context: annotation-config> chủ yếu được sử dụng để kích hoạt chú thích chèn phụ thuộc trong tệp Spring XML.

Hơn nữa, Spring Boot giới thiệu chú thích @SpringBootApplication. Chú thích đơn này tương đương với việc sử dụng @Configuration, @EnableAutoConfiguration và @ComponentScan.

Hãy sử dụng chú thích này trong lớp chính của ứng dụng:

@SpringBootApplication
class VehicleFactoryApplication {
    public static void main(String[] args) {
        SpringApplication.run(VehicleFactoryApplication.class, args);
    }
}Code language: JavaScript (javascript)

Kết quả là khi chúng ta chạy ứng dụng Spring Boot này, nó sẽ tự động quét các thành phần trong gói hiện tại và các gói con của nó. Do đó, nó sẽ đăng ký chúng trong Application Context của Spring và cho phép chúng tôi đưa các bean bằng @Autowired.

3. Sử dụng @Autowired

Sau khi bật tính năng chèn chú thích, chúng ta có thể sử dụng tính năng tự động nạp vào thuộc tính, bộ thiết lập và hàm tạo.

3.1. @Autowired trong Properties

Hãy xem cách tôi có thể chú thích một sản phẩm bằng @Autowired. Điều này giúp loại bỏ nhu cầu về getters và setters.

Đầu tiên, hãy xác định một bean fooFormatter:

@Component("fooFormatter")
public class FooFormatter {
    public String format() {
        return "foo";
    }
}Code language: PHP (php)

Sau đó, chúng tôi sẽ đưa bean này vào bean FooService bằng cách sử dụng @ Autowired về định nghĩa trường:

@Component
public class FooService {  
    @Autowired
    private FooFormatter fooFormatter;
}Code language: CSS (css)

Kết quả là Spring đưa fooFormatter vào khi FooService được tạo.

3.2. @Autowired trong Setters

Bây giờ, hãy thử thêm chú thích @Autowired  mong muốn trên một phương thức setter.

Trong ví dụ sau, phương thức setter được gọi với phiên bản FooFormatter khi FooService được tạo:

public class FooService {
    private FooFormatter fooFormatter;
    @Autowired
    public void setFooFormatter(FooFormatter fooFormatter) {
        this.fooFormatter = fooFormatter;
    }
}Code language: PHP (php)

3.3. @Autowired trong Constructors

Cuối cùng, hãy sử dụng @ Autowired  trên một phương thức khởi tạo.

Chúng ta sẽ thấy rằng một phiên bản của FooFormatter được Spring đưa vào làm đối số cho hàm tạo FooService.

public class FooService {
    private FooFormatter fooFormatter;
    @Autowired
    public FooService(FooFormatter fooFormatter) {
        this.fooFormatter = fooFormatter;
    }
}Code language: PHP (php)

Happy learning!!!

Các lựa chọn khác khi không muốn dùng GitHub

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 *