Ich arbeite an Frühling über Hibernate Projekt und ich bin nur am Anfang. Ich versuche, eine SpringBootApplication zu haben, die in MsSql einige LogEntries-Objekte schreibt. Ich habe einige verschiedene Pakete: enter image description hereFeld in com.XXX benötigt eine Bean vom Typ, die nicht gefunden werden konnte
hier die Klassen:
LogEntryFacadeImpl.class:
package com.tradingSystem.dataAccess;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.tradingSystem.entity.LogEntry;
@Service
public class LogEntryFacadeImpl implements LogEntryFacade{
@Autowired
private LogEntryDAO logEntryDao;
@Transactional
@Override
public Long addLogEntry(LogEntry log) {
return this.logEntryDao.save(log).getId();
}
@Override
public LogEntry getLogEntry(Long logId) {
return this.logEntryDao.findOne(logId);
}
}
LogEntryDAO.class:
package com.tradingSystem.dataAccess;
import org.springframework.data.jpa.repository.JpaRepository;
import com.tradingSystem.entity.LogEntry;
public interface LogEntryDAO extends JpaRepository<LogEntry, Long> {
}
und ich Verwenden Sie diese Klasse als Tester:
TestApplication.class:
package com.testings;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import com.tradingSystem.dataAccess.LogEntryFacade;
import com.tradingSystem.entity.LogEntry;
@SpringBootApplication
@ComponentScan({"com.tradingSystem" })
public class TestApplication implements CommandLineRunner{
@Autowired
private LogEntryFacade logEntryFacade;
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
LogEntry log = new LogEntry(552266, "Testing of log entry save",
new Date(System.currentTimeMillis()),
new Date(System.currentTimeMillis()));
System.err.println(log);
Long id = logEntryFacade.addLogEntry(log);
LogEntry log2 = logEntryFacade.getLogEntry(id);
System.err.println(log2);
}
}
wher i dies als Anwendung ausführen ich erhalte diese Meldung in der Konsole:
KLAGE UNTERLEGEN
Beschreibung Start: Feld logEntryDao in com.tradingSystem.dataAccess.LogEntryFacadeImpl benötigt eine Bean vom Typ 'com.tra' dingSystem.dataAccess.LogEntryDAO 'konnte nicht gefunden werden.
Aktion:
Betrachten Sie eine Bohne vom Typ 'com.tradingSystem.dataAccess.LogEntryDAO' in Ihrer Konfiguration definieren.
Ich legte die @ComponentScan({"com.tradingSystem" })
Anmerkung im Tester wie Sie sehen können. jedoch immer noch diese Nachricht erhalten. (wenn ich keine Pakete Trennung verwenden didnt, funktioniert alles einwandfrei ...)
Bitte helfen Sie mir dieses
zu lösenDank
Setzen Sie Ihre Hauptklasse in das com.tradingSystem-Paket. Oder verwenden Sie die Annotation EnableJpaRepositories, um anzugeben, wo sich die Repositorys befinden. –
@ JBNizet Danke. habe das durch deinen Vorschlag gelöst. Allerdings verstehe ich nicht, warum ich die main nicht unter com.tradingSystem.testing oder com.testing setzen kann ... – user3305371
Sie können. Wie bereits erwähnt, müssen Sie jedoch mithilfe von EnableJpaRepositories angeben, wo die Repos zu finden sind –