猿问

ServiceImpl 中构造函数的参数 0 需要一个 DAO 类型的 bean,但无法找到

在创建使用 Hibernate 作为 ORM 将对象保存在数据库中的服务时,我无法启动该应用程序。


我正在使用 Spring Boot 和 Hibernate。我的服务实现:


@Service

public class PropertyServiceImpl implements PropertyService{


private PropertyDAO propertyDAO;


    public PropertyServiceImpl(){

    System.out.println("inside propertyserviceimpl constructor");

}


@Autowired

public PropertyServiceImpl(PropertyDAO propertyDAO){

    this.propertyDAO = propertyDAO;

    System.out.println("inside save");

}


@Transactional

public void save(Property property) {

    propertyDAO.save(property);

}


@Override

public List findAll() {

    // TODO Auto-generated method stub

    return null;

}


}

PropertyDAO.java


public interface PropertyDAO {


public void save(Property property);


 }

PropertyDAOImpl 实现 DAO


public class PropertyDAOImpl implements PropertyDAO{


@Autowired

private SessionFactory sessionFactory;


public void save(Property property) {

    Session currentSession = sessionFactory.getCurrentSession();

    currentSession.saveOrUpdate(property);

}

}


当我启动 SpringBoot 应用程序时,收到以下错误消息。


***************************

APPLICATION FAILED TO START

***************************


Description:


Parameter 0 of constructor in com.flarow.flarowhomes.services.PropertyServiceImpl required a bean of type 'com.flarow.flarowhomes.dao.PropertyDAO' that could not be found.



Action:


Consider defining a bean of type 'com.flarow.flarowhomes.dao.PropertyDAO' in your configuration.


撒科打诨
浏览 181回答 2
2回答

千巷猫影

将@Repository添加到您的 DAO 实现类中,以便可以找到它:@Repository public class PropertyDAOImpl implements PropertyDAO {实现传统 Java EE 模式(例如“数据访问对象”)的团队也可以将此构造型应用于 DAO 类,但在此之前应注意了解数据访问对象和 DDD 样式存储库之间的区别。

慕少森

按如下方式更改您的 PropertyDAO:public&nbsp;interface&nbsp;PropertyDAO&nbsp;extends&nbsp;JpaRepository<Property,&nbsp;Integer>{&nbsp;}
随时随地看视频慕课网APP

相关分类

Java
我要回答