Ich habe ein seltsames Verhalten mit einer Spring Data Rest-Implementierung (Version 2.5.2.RELEASE).Spring Data Rest: ResourceProcessor-Konfiguration funktioniert nicht richtig
Ich versuche eine @Bean
von ResourceProcessor<Resource<Entity>>
zu registrieren, aber es ist etwas seltsam.
Ich bin mit zwei Arten von Lösungen versuchen:
1) die @Bean
in einer Klasse deklarieren:
@Bean
public ResourceProcessor<Resource<Author>> authorProcessor() {
return new ResourceProcessor<Resource<Author>>() {
@Override
public Resource<Author> process(Resource<Author> resource) {
System.out.println("method process of bean ResourceProcessor of class RepositoryBaseConfiguration");
return resource;
}
};
}
2) Implementierung der Schnittstelle ResourceProcessor
:
@Component
public class AuthorResourceProcessor implements ResourceProcessor<Resource<Author>> {
@Override
public Resource<Author> process(Resource<Author> resource) {
System.out.println("method process of class AuthorResourceProcessor");
return resource;
}
}
Die Prozessoren ar e völlig ignoriert: die Nachricht wird nie gedruckt.
bemerkte ich, dass die Klasse org.springframework.data.rest.webmvc.ResourceProcessorInvoker
einen Konstruktor hat:
public ResourceProcessorInvoker(Collection<ResourceProcessor<?>> processors) {
//...
}
Dieser Konstruktor 2 mal zu Beginn der Anwendung aufgerufen wird, statt nur einmal (wie ich erwartet wird), und ich verstehe nicht warum.
Beim ersten Mal wird die Variable "processors" mit den beiden Beans (wie erwartet) und mit der Bean org.springframework.data.rest.webmvc.ProfileResourceProcessor
gelöst.
Aber das zweite Mal ist die Variable "Prozessoren" nur mit der Bean org.springframework.data.rest.webmvc.ProfileResourceProcessor
gelöst.
Die zweite Konfiguration @Override die erste.
Irgendeine Idee?