com.XXX中的字段需要一个无法找到的类型的bean

时间:2017-06-10 14:20:20

标签: java spring hibernate

我正在开发Spring而不是Hibernate项目,我只是在开始时。 我尝试了一个SpringBootApplication,它向MsSql写了一些LogEntries对象。 我有一些不同的包: enter image description here

这是课程:

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> {

}

我将此类用作测试人员:

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);
    }



}

我运行这个作为应用程序我在控制台中收到此消息:

  

申请失败

     

描述:    com.tradingSystem.dataAccess.LogEntryFacadeImpl中的字段logEntryDao需要一个类型为&#39; com.tradingSystem.dataAccess.LogEntryDAO&#39;的bean。无法找到。

     

动作:

     

考虑定义一个类型为&#39; com.tradingSystem.dataAccess.LogEntryDAO&#39;的bean。在你的配置中。

我将@ComponentScan({"com.tradingSystem" })注释放在测试仪中,如您所见。但是,仍然得到这个消息。 (当我没有使用任何包分离时,一切正常......)

请帮我解决这个问题

感谢

1 个答案:

答案 0 :(得分:0)

您应该在Repository接口上方添加@Repository注释。 您可以选择将其添加为@Repository(value =&#34; logEntryRepository&#34;)