In meinem Frühling Anwendung verwende ich die LinieAutowired funktioniert nicht in AbstractHttpMessageConverter
@Autowired
private transient EntityService entityService;
an einigen Stellen erfolgreich zu bekommen, die EntityService zu bekommen. Aber nicht so in dem AbstractHttpMessageConverter schreibe ich CSV-Antworten geben (die in der Regel funktioniert)
public class SearchResultCsvConverter extends AbstractHttpMessageConverter<SearchResult> {
public SearchResultCsvConverter() {
super(new MediaType("text", "csv"));
}
@Autowired
private transient EntityService entityService;
Anmeldung:
@ComponentScan(...)
@Configuration
@EnableWebMvc
@EnableAsync
@EnableTransactionManagement
@EnableSpringConfigured
@PropertySource("classpath:config/application.properties")
public class ApplicationConfiguration extends WebMvcConfigurerAdapter {
@Inject
private Environment environment;
@Autowired
private transient EntityService entityService;
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new SearchResultCsvConverter());
}
Die SearchResultCsvConverter als solche Werke, auch sind EntityService in den ApplicationConfiguration, aber in SearchResultCsvConverter es ist null. Irgendwelche Hinweise, wo ich den Fehler finden könnte oder worauf ich achten muss, werden sehr geschätzt!
Ich benutze Frühling 4.3.4.
- bearbeiten 1
Ich versuchte @Service für die SearchResultCsvConverter auch - gleiches Ergebnis.
- bearbeiten 2: Lösung dank @Radu Pop
public class ApplicationConfiguration extends WebMvcConfigurerAdapter {
@Inject
private Environment environment;
@Autowired
private transient EntityService entityService;
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
final SearchResultCsvConverter searchResultCsvConverter = new SearchResultCsvConverter();
searchResultCsvConverter.setEntityService(entityService);
converters.add(searchResultCsvConverter);
und im Konverter
private transient EntityService entityService;
public SearchResultCsvConverter() {
super(new MediaType("text", "csv"));
}
public void setEntityService(EntityService entityService) {
this.entityService = entityService;
}
mir Sieht nicht so elegant, aber funktioniert gut.
Vielen Dank Ich habe die letztere Lösung verwendet. – Paflow