J'essaie d'implémenter un service web simple en utilisant Spring 4. Mais mon userService ne semble pas fonctionner.Spring Data Rest Dépôt non trouvé
je configuration comme ceci:
public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[]{ PersistenceConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[]{
};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/api/*"};
}
}
Avec config pour mon persistance en mémoire HSQLDB comme ceci:
@Configuration
@ComponentScan("example.userService")
@PropertySource("classpath:hibernate.properties")
@EnableJpaRepositories("example.userService.repo")
public class PersistenceConfig {
@Autowired
Environment env;
@Bean
LocalContainerEntityManagerFactoryBean entityManagerFactory() {
/* ... */
return entityManagerFactoryBean;
}
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.HSQL)
.addScript("classpath:db/data.sql")
.build();
}
}
J'ai une entité User
. Et voici mon dépôt:
@Repository
@RepositoryRestResource
public interface UserRepo extends CrudRepository<User, Long> {
List<User> findAll();
List<User> findByFirstName(@Param("firstName") String firstName);
}
Et j'ai aussi na jetée embarqué sur le port 9999 pour exécuter ce service.
Et quand la jetée démarre et que je passe à localhost:9999/api/users/
ou /user/1
ou si cela ressemble à cela, une erreur 404 se produit. findByFirstName
méthode ne fonctionne pas non plus.
Je pense que cela se produit parce que Servlet Dispatcher ne connaît pas mon référentiel exposé. Mais je ne sais pas non plus comment 'l'enregistrer' puisque je ne veux pas utiliser le contrôleur pour cela.
J'ai lu printemps docs here, here et un autre tutoriels, mais la plupart d'entre eux ne fournissent pas de configs et décrire des dépôts qui tout simplement travail juste.
Des suggestions sur ce que je peux faire avec et ce qui peut causer ce problème puisque rien n'est montré dans la console et au moment de la compilation tout fonctionne bien?
Merci d'avance!
UPD 1: J'ai ajouté @RepositoryRestResource
à UesrRepo
selon Accessing JPA Data with REST mais /api/users
est encore 404.
UPD 2: J'ai question simplifiée en supprimant partie de service de celui-ci, car il nécessite un contrôleur selon le commentaire de @ Antoniossss. Ce n'est pas si simple: quelle configuration (le cas échéant) dois-je utiliser pour exposer le référentiel?
Je ne vois pas le (s) contrôleur (s) implémentant les points de terminaison/users// users/1 – chomnoue
@chomnoue Les référentiels ne sont-ils pas exposés par leur nom? Je veux dire UserRepository devrait être exposé à '/ users' ou'/user/'(mais ce n'est pas la meilleure pratique pour les exposer directement). Je voudrais les utiliser cependant sans contrôleurs et services. Est-ce impossible? –
Vous avez besoin de @RepositoryRestResource si vous souhaitez exposer des référentiels en tant que ressources de repos. https://spring.io/guides/gs/accessing-data-rest/ – chomnoue