Java 考虑定义一个类型的豆和*x27;包装';在您的配置中
我试图在SpringBoot中创建一个简单的REST服务。在我使用Crudepository之前,一切都很好。现在我得到了这个错误- ***应用程序无法启动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
说明: 需要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下的putEmployeeRest应用程序
,以及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>{
}