在开始之前,请假定pom.xml是无故障的。

话虽如此,让我们继续前进,

我收到的错误如下:


  申请开始失败
  ***************************说明:
  
  com.sagarp.employee.EmployeeService中的empDao字段需要一个Bean
  键入“ com.sagarp.employee.EmployeeDao”(找不到)。


现在spring boot application类如下:

package com.sagarp;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@EnableEurekaClient //this is for eureka which not our concern right now.
@ComponentScan(basePackages = "com.sagarp.*") //Included all packages
public class EmployeeHibernateApplication {

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


EmployeeService类如下:

package com.sagarp.employee;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class EmployeeService {

    @Autowired
    private EmployeeDao empDao; // interface

    public EmployeeDao getEmpDao() {
        return empDao;
    }

    public void setEmpDao(EmployeeDao empDao) {
        this.empDao = empDao;
    }
    //some methods
}



  请注意,EmployeeDao是一个接口。


EmployeeDao界面如下:

public interface EmployeeDao {
    //Oh! so many methods to I have provided
}


实现EmployeeDaoImpl接口的EmployeeDao类。

public class EmployeeDaoImpl implements EmployeeDao {

    @Autowired
    private SessionFactory sessionFactory;

    //Oh!So many methods I had to implement
}


我猜是由于EmployeeService@Service注释的原因,它是自动自动连接的。
我在components中添加了所有软件包,以便它将扫描并实例化我可能具有的所有依赖关系。

但这没有,因此是问题。

任何人都可以通过上述详细信息来帮助我解决错误。
请让我知道是否需要更多详细信息。

最佳答案

EmployeeDaoImpl未注册为bean。有两种方法:XML或注释。由于您已经使用了注释,因此您可以执行以下操作:

@Repository
public class EmployeeDaoImpl implements EmployeeDao {

    @Autowired
    private SessionFactory sessionFactory;

    //...
}


请注意,您已经将EmployeeService注册为@Service的bean。此后,应在容器中识别咖啡豆并正确注入。

为什么要DAO使用@Repository而不是@Service?如何决定?阅读Baeldung's文章以获取更多信息。


@Component是任何Spring托管组件的通用构造型
@Service在服务层注释类
@Repository在持久层注释类,它将充当数据库存储库

09-12 17:32