我的问题所涉及的代码:
@SpringBootApplication
public class Application {
private static final Logger log = LoggerFactory.getLogger(Application.class);
public static void main(String args[]) {
SpringApplication.run(Application.class);
}
@Bean
public Object test(RestTemplate restTemplate) {
Quote quote = restTemplate.getForObject(
"http://gturnquist-quoters.cfapps.io/api/random", Quote.class);
log.info(quote.toString());
return new Random();
}
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
@Bean
public CommandLineRunner run(RestTemplate restTemplate) throws Exception {
return args -> {
Quote quote = restTemplate.getForObject(
"http://gturnquist-quoters.cfapps.io/api/random", Quote.class);
log.info(quote.toString());
};
}
}
我对Spring很陌生。据我所知,@Bean注解负责将对象保存在IoC容器中,是这样吗?
如果是这样的话:首先收集所有带有@Bean注解的方法,然后再执行它们吗?
在我的示例中,我添加了一个名为test()的方法,它与run()执行相同的操作,但返回一个对象(Random())。
结果相同,因此它可以使用CommandLineRunner和Object一起工作。
是否有理由返回CommandLineRunner,例如使用类似run()的语法?
此外:在这一点上,我还没有看到将方法移动到容器中的优势。为什么不直接执行它呢?
谢谢!