2017-06-10 1 views
2

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ösen

Dank

+0

Setzen Sie Ihre Hauptklasse in das com.tradingSystem-Paket. Oder verwenden Sie die Annotation EnableJpaRepositories, um anzugeben, wo sich die Repositorys befinden. –

+0

@ 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

+0

Sie können. Wie bereits erwähnt, müssen Sie jedoch mithilfe von EnableJpaRepositories angeben, wo die Repos zu finden sind –

Antwort

0

Sie @Repository Anmerkung über Ihre Repository-Schnittstelle hinzufügen sollten. Optional können Sie es wie @Repository hinzufügen (Wert = "logEntryRepository")

Verwandte Themen