Perché non posso usare @Autowired
in questo caso?Differenza tra @Bean e @Autowired
@SpringBootApplication
public class Application {
@Autowired
BookingService bookingService;
public static void main(String[] args) {
bookingService.book("Alice", "Bob", "Carol");
}
}
ma può utilizzare @Bean
@SpringBootApplication
public class Application {
@Bean
BookingService bookingService() {
return new BookingService();
}
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(Application.class, args);
BookingService bookingService = ctx.getBean(BookingService.class);
bookingService.book("Alice", "Bob", "Carol");
}
}
non sono i due modi per generare BookingService
la stessa cosa?
Bean annotazione è per la registrazione il bean nel contesto primavera, mentre Autowried annotazione è per ottenere il bean dal contenuto dell'applicazione Spring e collegarlo come dipendenza per un altro oggetto –
È necessario fornire anche la classe BookingService. Perché se questo è annotato con Component, anche la tua prima classe funzionerebbe come la seconda. – PowerFlower