在Java中,依賴注入(Dependency Injection,簡稱DI)是一種設計模式,用于減少組件之間的耦合。Java注解是實現依賴注入的一種方式。這里是一個簡單的例子,說明如何使用Java注解實現依賴注入。
首先,我們需要定義一個接口和一個實現類:
public interface MessageService {
String getMessage();
}
@Component
public class EmailService implements MessageService {
@Override
public String getMessage() {
return "Email message";
}
}
在這個例子中,我們定義了一個MessageService
接口和一個實現類EmailService
。我們使用@Component
注解將EmailService
標記為一個組件,這樣Spring框架就能識別并管理它。
接下來,我們創建一個使用MessageService
的類:
@Component
public class NotificationService {
private final MessageService messageService;
@Autowired
public NotificationService(MessageService messageService) {
this.messageService = messageService;
}
public String sendNotification() {
return messageService.getMessage();
}
}
在這個例子中,我們創建了一個NotificationService
類,它依賴于MessageService
接口。我們使用@Autowired
注解將MessageService
注入到NotificationService
中。這樣,我們就不需要手動創建和管理MessageService
的實例,而是由Spring框架負責注入。
最后,我們需要配置Spring框架以掃描這些組件。在Spring Boot項目中,只需在主類上添加@SpringBootApplication
注解即可。在非Spring Boot項目中,需要配置一個AnnotationConfigApplicationContext
來掃描這些組件。
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
現在,當我們在應用程序中使用NotificationService
時,Spring框架會自動注入MessageService
的實例。這就是如何使用Java注解實現依賴注入的基本方法。