Ho la seguente configurazione in cui ho due bean Spring con lo stesso nome da due diverse classi di configurazione.Avvio a molla che non si lamenta di due fagioli con lo stesso nome
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfiguration {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class OtherRestTemplateConfiguration {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
E sto iniettando (e l'utilizzo) questo fagiolo in questo modo:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
@Component
public class SomeComponent {
@Autowired
private RestTemplate restTemplate;
}
Ora, la mia domanda è: perché è la primavera non si lamenta di avere più fagioli con il stesso nome? Mi aspetterei un'eccezione qui e dover aggiungere un'annotazione @Primary
per assicurarmi che venga utilizzata quella corretta.
Nota a margine: anche se aggiungo @Primary
, non è ancora in grado di iniettare sempre quello corretto.
Non si può avere fagioli con lo stesso nome, il risultato finale sarà un singolo chicco come un chicco sovrascrive l'altro, a causa lo stesso nome. Quindi c'è un solo fagiolo nel contesto. Per ottenere più bean date loro nomi diversi e annotatene uno con '@ Primary'. –