J'obtiens l'erreur suivante :
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of method setApplicant in webService.controller.RequestController required a bean of type 'com.service.applicant.Applicant' that could not be found.
Action:
Consider defining a bean of type 'com.service.applicant.Applicant' in your configuration.
Je n'ai jamais vu cette erreur auparavant mais il est étrange que l'@Autowire ne fonctionne pas. Voici la structure du projet :
Interface du candidat
public interface Applicant {
TApplicant findBySSN(String ssn) throws ServletException;
void deleteByssn(String ssn) throws ServletException;
void createApplicant(TApplicant tApplicant) throws ServletException;
void updateApplicant(TApplicant tApplicant) throws ServletException;
List<TApplicant> getAllApplicants() throws ServletException;
}
ApplicantImpl
@Service
@Transactional
public class ApplicantImpl implements Applicant {
private static Log log = LogFactory.getLog(ApplicantImpl.class);
private TApplicantRepository applicantRepo;
@Override
public List<TApplicant> getAllApplicants() throws ServletException {
List<TApplicant> applicantList = applicantRepo.findAll();
return applicantList;
}
}
Maintenant, je devrais être en mesure d'Autowire Applicant et d'y accéder, mais dans ce cas, cela ne fonctionne pas lorsque je l'appelle dans ma page d'accueil. @RestController:
@RestController
public class RequestController extends LoggingAware {
private Applicant applicant;
@Autowired
public void setApplicant(Applicant applicant){
this.applicant = applicant;
}
@RequestMapping(value="/", method = RequestMethod.GET)
public String helloWorld() {
try {
List<TApplicant> applicantList = applicant.getAllApplicants();
for (TApplicant tApplicant : applicantList){
System.out.println("Name: "+tApplicant.getIndivName()+" SSN "+tApplicant.getIndSsn());
}
return "home";
}
catch (ServletException e) {
e.printStackTrace();
}
return "error";
}
}
------------------------UPDATE 1-----------------------
J'ai ajouté
@SpringBootApplication
@ComponentScan("module-service")
public class WebServiceApplication extends SpringBootServletInitializer {
@Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(WebServiceApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(WebServiceApplication.class, args);
}
}
et l'erreur a disparu mais rien ne s'est produit. Cependant, lorsque j'ai commenté tout ce qui concerne Applicant
dans le RestController
avant d'ajouter @ComponentScan()
J'ai pu renvoyer une chaîne de caractères le UI
ce qui signifie que mon RestController
fonctionnait, maintenant il est ignoré. Je suis moche Whitelabel Error Page
maintenant.
---------------------UPDATE 2------------------------------
J'ai ajouté le paquet de base du haricot dont il se plaignait. L'erreur se lit comme suit :
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of method setApplicantRepo in com.service.applicant.ApplicantImpl required a bean of type 'com.delivery.service.request.repository.TApplicantRepository' that could not be found.
Action:
Consider defining a bean of type 'com.delivery.request.request.repository.TApplicantRepository' in your configuration.
J'ai ajouté @ComponentScan
@SpringBootApplication
@ComponentScan({"com.delivery.service","com.delivery.request"})
public class WebServiceApplication extends SpringBootServletInitializer {
@Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(WebServiceApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(WebServiceApplication.class, args);
}
}
----------------------------Update 3----------------------
en ajoutant :
@SpringBootApplication
@ComponentScan("com")
public class WebServiceApplication extends SpringBootServletInitializer {
se plaint toujours de mon ApplicantImpl
classe qui @Autowires
mon repo TApplicantRepository
en elle.
0 votes
Où se trouve votre fichier de contexte d'application ? Si vous n'en avez pas, vous devriez envisager de donner à l Printemps un indice avec des annotations comme @ComponentScan pour rendre tous les haricots disponibles.
0 votes
@MarioSantini veuillez voir la mise à jour 1
0 votes
Je suppose qu'après chaque mise à jour, les erreurs ont été modifiées ? Si possible, postez la structure de votre projet, et les journaux d'erreurs/stacktrace dans chaque cas Il est préférable de savoir "pourquoi" ces erreurs se sont produites, plutôt qu'un "quelque chose" a fait disparaître l'erreur. Ce sera utile pour les autres qui rencontrent un problème similaire.