【发布时间】:2016-03-14 09:02:17
【问题描述】:
为什么在这种情况下我不能使用@Autowired?
@SpringBootApplication
public class Application {
@Autowired
BookingService bookingService;
public static void main(String[] args) {
bookingService.book("Alice", "Bob", "Carol");
}
}
但可以使用@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");
}
}
这两种生成BookingService的方法不一样吗?
【问题讨论】:
-
Bean 注解用于在 Spring 上下文中注册您的 Bean,而 Autowried 注解用于从 Spring 应用程序内容中获取 Bean 并将其连接为另一个对象的依赖项
-
您也应该提供 BookingService 类。因为如果那是用 Component 注释的,那么你的第一个类也可以像第二个一样工作。
标签: java spring dependency-injection