ServiceImpl中的构造函数的参数0需要找不到DAO类型的Bean

时间:2019-09-08 05:36:01

标签: java spring hibernate spring-boot

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

我正在使用Spring Boot和Hibernate。我的ServiceImpl:

<script>
export default {
  data() {
    return {
      radios: 'radio-1',
      valid: true
    }
  }
}
</script>

PropertyDAO.java

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

}

PropertyDAOImpl实现DAO

public interface PropertyDAO {

public void save(Property property);

 }

}

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

public class PropertyDAOImpl implements PropertyDAO{

@Autowired
private SessionFactory sessionFactory;

public void save(Property property) {
    Session currentSession = sessionFactory.getCurrentSession();
    currentSession.saveOrUpdate(property);
}

2 个答案:

答案 0 :(得分:2)

@Repository添加到您的DAO实现类中,以便找到它:

@Repository
public class PropertyDAOImpl implements PropertyDAO {
  

实现诸如“数据访问对象”之类的传统Java EE模式的团队也可以将这种构造型应用于DAO类,尽管在这样做之前应注意理解数据访问对象和DDD样式存储库之间的区别。

答案 1 :(得分:0)

如下更改您的PropertyDAO:

public interface PropertyDAO extends JpaRepository<Property, Integer>{ }