1

Je lis et j'apprends les données Spring Boot avec MongoDB. J'ai environ 10 enregistrements dans ma base de données dans le format suivant:API de repos avec données de ressort MongoDB - Méthode de référentiel ne fonctionnant pas

{ 
    "_id" : ObjectId("5910c7fed6df5322243c36cd"), 
    name: "car" 
} 

Quand je l'ouvre url:

http://localhost:8090/items 

Je reçois une liste exhaustive de tous les éléments. Cependant, je veux utiliser les méthodes de MongoRepository telles que findById, count etc. Quand je les utiliser en tant que tel:

http://localhost:8090/items/count 
http://localhost:8090/items/findById/5910c7fed6df5322243c36cd 
http://localhost:8090/items/findById?id=5910c7fed6df5322243c36cd 

Je reçois un 404.

Ma configuration est comme ceci:

@SpringBootApplication 
public class Application { 
    public static void main(String[] args) throws IOException { 
     SpringApplication.run(Application.class, args); 
    } 
} 

@Document 
public class Item implements Serializable { 
    private static final long serialVersionUID = -4343106526681673638L; 

    @Id 
    private String id; 
    private String name; 

    public String getId() { 
     return id; 
    } 
    public void setId(String id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
} 

@RepositoryRestResource(collectionResourceRel = "item", path = "items") 
public interface ItemRepository<T, ID extends Serializable> extends MongoRepository<Item, String>, ItemRepositoryCustom { 

} 

Qu'est-ce que je fais mal? Ai-je besoin de mettre en œuvre les méthodes définies par MongoRepository ou seront-elles mises en œuvre automatiquement? Je suis perdu et j'ai essayé de comprendre cela depuis si longtemps. Je n'ai aucune méthode dans mon contrôleur, c'est vide.

+1

Avez-vous regardé les mappages de requêtes qui sont examinés lorsque vous démarrez l'application? Il vous montrera tous les mappages créés automatiquement par Spring Data REST. –

+1

Excusez les fautes de frappe. Cela aurait dû dire "qui sont enregistrés lorsque votre application commence" –

+0

Merci Andy. Existe-t-il une fonctionnalité dans Eclipse qui peut nous indiquer tous les mappings? Désolé, je ne suis pas sûr à ce sujet. – Karthik

Répondre

2

Vous devez déclarer la méthode findById pour qu'elle soit exposée.

Item findById(String id); 
Item findByName(String name); 

Notez que vous n'avez pas besoin d'implémenter les méthodes. SpringBoot analysera le nom de la méthode et de fournir la bonne application

+0

cela fonctionne. Cependant, la méthode count ne fonctionne pas de cette façon. Est-ce parce que le type de retour est long au lieu de Long? – Karthik

0

j'avais même question,

Après avoir retiré @Configuration,@ComponentScan tout a bien fonctionné.