Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 考虑定义一个类型的豆和*x27;包装';在您的配置中_Java_Spring_Rest_Spring Boot - Fatal编程技术网

Java 考虑定义一个类型的豆和*x27;包装';在您的配置中

Java 考虑定义一个类型的豆和*x27;包装';在您的配置中,java,spring,rest,spring-boot,Java,Spring,Rest,Spring Boot,我试图在SpringBoot中创建一个简单的REST服务。在我使用Crudepository之前,一切都很好。现在我得到了这个错误- ***应用程序无法启动 说明: 需要company.springBoot.io.Employee.EmployeeService中的字段er “company.springBoot.io.Employee.EmployeeRepo”类型的bean 找不到 行动: 考虑定义类型为的bean 配置中的“company.springBoot.io.Employee.E

我试图在SpringBoot中创建一个简单的REST服务。在我使用Crudepository之前,一切都很好。现在我得到了这个错误-

***应用程序无法启动


说明:

需要company.springBoot.io.Employee.EmployeeService中的字段er “company.springBoot.io.Employee.EmployeeRepo”类型的bean 找不到

行动:

考虑定义类型为的bean 配置中的“company.springBoot.io.Employee.EmployeeRepo”***

这是我的密码-

控制器-

@RestController
public class EmployeeController {


@Autowired
EmployeeService employeeService;

@GetMapping("/employees")
public List<Employee> getAllEmployees(){
    return employeeService.getAllEmployees();
}
@GetMapping("/employees/{id}")
public Employee getEmployee(@PathVariable int id) {
    return employeeService.getEmployee(id);
}

@PostMapping("/employees")
public String addEmployee(@RequestBody Employee e) {
    employeeService.addEmployee(e );
    return "Employee Records were added successfully";
}

@PutMapping("/employees/{id}")
public String updateEmployee(@RequestBody Employee e, @PathVariable int id) {
    return employeeService.updateEmployee(e, id);
    }

@DeleteMapping("/employees/{id}")
public @ResponseBody String deleteEmployee(@PathVariable int id) {
    return employeeService.deleteEmployee(id);

}

}
@Autowired
EmployeeRepo er;

public List<Employee> getAllEmployees() {


    List<Employee> list= new ArrayList<>();
    er.findAll()
    .forEach(list::add);
    return list;
        //return list;
}


public void addEmployee(Employee e) {
    // TODO Auto-generated method stub

    er.save(e);

}


public String updateEmployee(Employee e, int id) {
    // TODO Auto-generated method stub
er.save(e);
    String s= "The Employee with id  has been replaced by Employee with id "+e.getId();
    return s;
}


public String deleteEmployee(int id) {
    //  Auto-generated method stub
    er.deleteById(id);
    return "Employee withh id "+id+" has been removed from the company";
}


public Employee getEmployee(int id) {
    return er.findById(id).get();
}


}
有人能帮我吗

--------------------------------------更新-------------------------------------- 我像这样更改了文件夹结构-

现在我得到了这个错误-


您缺少一个符号

package company.springBoot.io.Employee;

import org.springframework.data.repository.CrudRepository;
@Repository /// here is the trick
public interface EmployeeRepo extends CrudRepository<Employee, Integer>{

}
package company.springBoot.io.Employee;
导入org.springframework.data.repository.crudepository;
@Repository///这里是诀窍
公共接口EmployeeRepo扩展了Crudepository{
}

Spring没有扫描该接口,因为缺少注释,因此无法创建此类依赖项。

这意味着springboot没有读取您的存储库类。这可能是因为您的包结构不正确。最简单的修复方法是让主类
EmployeeRestApplication
的级别高于所有其他类。类似于company.springBoot.io.EmployeeRest下的put
EmployeeRest应用程序
,以及company.springBoot.io.EmployeeRest.controller、company.springBoot.io.EmployeeRest.service和company.springBoot.io.EmployeeRest.repos包下的其他类。。这样,springBoot应用程序就不需要
scanBasePackages
属性。您可以发布您也在使用的POJO,@Kshitiz Sharma吗?按照Spring Boot团队的建议,将您的
EmployeeRestApplication
放入
company.springBoot.io
包中。如果你把它放在其他地方,你就失去了SpringBoot的很多好处(比如自动检测JPA存储库等等)。如果要保留此功能,需要添加一个
@EnableJpaRepositories
,并指定要扫描的包。然而,最简单的方法是将应用程序放在一个顶级包中。@pvpkiran我的文件夹结构是这样的-我的雇员重新启动应用程序位于company.springBoot.Employee Rest包中,所有其他文件位于company.springBoot.Employee中package@M.Deinum我试着这样做,但它会带来越来越多的错误。我的文件夹结构在上面的评论中提到。请看一看,说明界面不会有什么不同。
package company.springBoot.io.EmployeeRest;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication(scanBasePackages= 
{"company.springBoot.io.Employee"})
public class EmployeeRestApplication {

public static void main(String[] args) {
    SpringApplication.run(EmployeeRestApplication.class, args);
}
}
package company.springBoot.io.Employee;

import org.springframework.data.repository.CrudRepository;
@Repository /// here is the trick
public interface EmployeeRepo extends CrudRepository<Employee, Integer>{

}