Вот мой текущий код.Весна - следует ли использовать @Bean или @Component?
Метод 1
@Configuration
public class AppConfig {
@Bean
@Autowired(required = false)
public HttpClient createHttpClient() {
// do some connections configuration
return new HttpClient();
}
@Bean
@Autowired
public NameClient nameClient(HttpClient httpClient,
@Value("${ServiceUrl:NotConfigured}")
String serviceUrl) {
return new NameClient(httpClient, serviceUrl);
}
}
И NameClient
простой POJO выглядит следующим образом
public class NameClient {
private HttpClient client;
private String url;
public NameClient(HttpClient client, String url) {
this.client = client;
this.url = url;
}
// other methods
}
Вместо использования @Bean
для настройки, я хотел следовать этой схеме:
Способ 2
@Configuration
public class AppConfig {
@Bean
@Autowired(required = false)
public HttpClient createHttpClient() {
// do some connections configuration
return new HttpClient();
}
}
и использовать функцию автоматического сканирования, чтобы получить боб
@Service //@Component will work too
public class NameClient {
@Autowired
private HttpClient client;
@Value("${ServiceUrl:NotConfigured}")
private String url;
public NameClient() {}
// other methods
}
Почему первый метод используется/Preferred? В чем преимущество одного над другим? Я читал о различиях между аннотациями @Component
и @Bean
.
это действительный пункт. Я не уверен, почему мы используем метод 1, хотя у нас есть код –
. Другая причина может быть, если вы не хотите добавлять специальные примечания Spring, потому что этот код используется в других проектах, отличных от Spring. – dunni