У меня есть класс конфигурации (см. Ниже), который создает Retrofit «bean-компоненты», и эти bean-компоненты затем (должны быть) внедрены в сервис.Тем не менее, в данный момент кажется, что bean-компонент Retrofit «exampleRepository» не был создан до службы , когда указано имя bean-компонента , т.е. «@Bean (name = exampleRepository)».Я использовал эту настройку множество раз без проблем, но здесь это не сработало.Кто-нибудь знает почему?Код следует.
Конфигурация
@Configuration
@ConfigurationProperties("example")
public class RetrofitConfig {
@NotNull
private String baseUrl;
public String getBaseUrl() {
return baseUrl;
}
public void setBaseUrl(String baseUrl) {
this.baseUrl = baseUrl;
}
@Bean(name = "retrofitBuilder")
public Retrofit.Builder retrofitBuilder() {
return new Retrofit.Builder().addConverterFactory(JacksonConverterFactory.create());
}
@Bean(name = "okHttpClient")
public OkHttpClient okHttpClient() {
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
httpLoggingInterceptor.setLevel(Level.BODY);
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.addInterceptor(httpLoggingInterceptor);
return httpClient.build();
}
@Bean(name = "exampleRetrofit")
public Retrofit exampleRetrofit(@Qualifier("retrofitBuilder") Retrofit.Builder builder, @Qualifier("okHttpClient") OkHttpClient okHttpClient) {
return builder.client(okHttpClient).baseUrl(getBaseUrl()).build();
}
@Bean(name = "exampleRepository")
public ExampleContract exampleRespository(@Qualifier("exampleRetrofit") Retrofit retrofit) {
return retrofit.create(ExampleContract.class);
}
}
Сервис
@Service
@Transactional
public class ExampleService {
private ExampleContract exampleRepository;
public ExampleService(ExampleContract exampleRepository) {
this.exampleRepository = exampleRepository;
}
}