2017-10-21 131 views
0

Je suivais ce guide pour ajouter MySql à un projet SpringBoot déjà existant dont la gestion des dépendances est en cours. Juste au moment où j'ai ajouté ces trois classes utilisées dans le didacticiel comme suivreL'application SpringBoot ne trouve pas de référentiel défini dans le contrôleur

main/java/net/code/modèle/Users.Java

package net.code.controller; 
import net.code.model.User; 
import net.code.repo.UserRepository; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.web.bind.annotation.*; 


@RestController // This means that this class is a Controller 
@RequestMapping(path="/demo") // This means URL's start with /demo (after Application path) 
public class MainController { 
    @Autowired // This means to get the bean called userRepository 
    // Which is auto-generated by Spring, we will use it to handle the data 
    private UserRepository userRepository; 

    @GetMapping(path="/add") // Map ONLY GET Requests 
    public @ResponseBody String addNewUser (@RequestParam String name 
      , @RequestParam String email) { 
     // @ResponseBody means the returned String is the response, not a view name 
     // @RequestParam means it is a parameter from the GET or POST request 

     User n = new User(); 
     n.setName(name); 
     n.setEmail(email); 
     userRepository.save(n); 
     return "Saved"; 
    } 

    @GetMapping(path="/all") 
    public @ResponseBody Iterable<User> getAllUsers() { 
     // This returns a JSON or XML with the users 
     return userRepository.findAll(); 
    } 
} 

et un référentiel utilisateur comme principal/java/net/code /repo/UserRepository.Java package net.code.repo;

import net.code.model.User; 
import org.springframework.data.repository.CrudRepository; 
import org.springframework.stereotype.Repository; 

// This will be AUTO IMPLEMENTED by Spring into a Bean called userRepository 
// CRUD refers Create, Read, Update, Delete 

@Repository 
public interface UserRepository extends CrudRepository<User, Long> { 

} 

avec un contrôleur webservice main/java/net/code/contrôleur/MainController.Java

package net.code.controller; 

import net.code.model.User; 
import net.code.repo.UserRepository; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.web.bind.annotation.*; 


@RestController // This means that this class is a Controller 
@RequestMapping(path="/demo") // This means URL's start with /demo (after Application path) 
public class MainController { 
    @Autowired // This means to get the bean called userRepository 
    // Which is auto-generated by Spring, we will use it to handle the data 
    private UserRepository userRepository; 

    @GetMapping(path="/add") // Map ONLY GET Requests 
    public @ResponseBody String addNewUser (@RequestParam String name 
      , @RequestParam String email) { 
     // @ResponseBody means the returned String is the response, not a view name 
     // @RequestParam means it is a parameter from the GET or POST request 

     User n = new User(); 
     n.setName(name); 
     n.setEmail(email); 
     userRepository.save(n); 
     return "Saved"; 
    } 

    @GetMapping(path="/all") 
    public @ResponseBody Iterable<User> getAllUsers() { 
     // This returns a JSON or XML with the users 
     return userRepository.findAll(); 
    } 
} 

Ma classe avec @SpringBoot main/java/net/code/App.Java

package net.code; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 

//@CrossOrigin(origins = "http://127.0.0.1:8080") 

@SpringBootApplication 

@ComponentScan("net.code") 
//@ComponentScan(basePackages = { "net.code","net.code.repo"}) 

//@RestController 
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) 
public class App extends WebMvcConfigurerAdapter { 

    public static void main(String[] args) { 
     SpringApplication.run(App.class, args); 
    } 

} 

Mais chaque fois que je lance l'application, je continue à recevoir le message ci-dessous

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled. 
2017-10-21 15:11:59.674 ERROR 67424 --- [   main] o.s.b.d.LoggingFailureAnalysisReporter : 

*************************** 
APPLICATION FAILED TO START 
*************************** 

Description: 

Field userRepository in net.code.controller.MainController required a bean of type 'net.code.repo.UserRepository' that could not be found. 


Action: 

Consider defining a bean of type 'net.code.repo.UserRepository' in your configuration. 


Process finished with exit code 1 

Je recherche de question pertinente comme ces Spring Boot not autowiring @Repository, @RestController in other package doesn't work mais ne pouvait pas fixer comme suggestion de ceux lien ne fonctionnait pas pour moi Je voulais aussi essayer la solution retenue ici Consider defining a bean of type 'package' in your configuration [Spring-Boot] mais je trouve que il n'y a pas paquet pour @EnableJpaRepositories

S'il vous plaît, aidez-moi à ce que j'ai essayé de résoudre ce problème depuis plusieurs jours

+0

Essayez avec '@EnableJpaRepositories (basePackages =" ")' – imk

+0

Vous devez faire quelque chose de mal. Ce même code fonctionne bien sur mon système – Olantobi

+0

Je sais que quelque chose ne va pas, mais est faux? Cependant @EnableJpaRepositories ne compile pas dans mon IDE comme un paquet manquant qui a ceci et que je ne sais pas comment obtenir – olyjosh

Répondre