Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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 获取未满足的依赖异常(未找到类型为的符合条件的bean),即使已定义bean并使用服务注释_Java_Spring_Spring Boot - Fatal编程技术网

Java 获取未满足的依赖异常(未找到类型为的符合条件的bean),即使已定义bean并使用服务注释

Java 获取未满足的依赖异常(未找到类型为的符合条件的bean),即使已定义bean并使用服务注释,java,spring,spring-boot,Java,Spring,Spring Boot,我正在尝试运行我的基本restapi应用程序,它定义了一些pojo,并使用服务层从h2数据库获取数据。但是当我运行应用程序时,我得到的是一个服务对象的bean找不到 ProjectResController.java @RestController @RequestMapping(ProjectRestController.ENDPOINT) @Api(produces = MediaType.APPLICATION_JSON_VALUE, tags = "Project&qu

我正在尝试运行我的基本restapi应用程序,它定义了一些pojo,并使用服务层从h2数据库获取数据。但是当我运行应用程序时,我得到的是一个服务对象的bean找不到

ProjectResController.java

    @RestController
@RequestMapping(ProjectRestController.ENDPOINT)
@Api(produces = MediaType.APPLICATION_JSON_VALUE, tags = "Project")
public class ProjectRestController {

    public static final String ENDPOINT = "/api/v2/projects";
    public static final String ENDPOINT_ID = "/{id}";
    public static final String PATH_VARIABLE_ID = "id";
    public static final String ENDPOINT_SYSTEM_ID = "/{systemId}/projects";

    private static final String API_PARAM_ID = "ID";
    
    @Autowired
    private SdlcService sdlcService;

    @Autowired
    private ProjectService projectService;

    @ApiOperation("Get a Project")
    @GetMapping(ENDPOINT_ID)
    public Project getProject(
            @ApiParam(name = API_PARAM_ID, required = true) @PathVariable(PATH_VARIABLE_ID) final long projectId) {
        return projectService.getProject(projectId);
    }

    @ApiOperation("Create a Project")
    @PostMapping(ENDPOINT_SYSTEM_ID)
    public Project createProject(@PathVariable(value = "systemId") Long systemId, @Valid @RequestBody Project project) {
        sdlcService.findById(systemId).ifPresent(project::setSdlcSystem);
        return projectService.saveProject(project);
    }
}
    @Entity
@lombok.Data
@Table(name = "project")
@EntityListeners(AuditingEntityListener.class)
public class Project {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    public long getId() {
        return this.id;
    }

    public void setId(long id) {
        this.id = id;
    }

    @Column(name = "external_id", nullable = false)
    @NotBlank
    private String externalId;

    public String getExternalId() {
        return this.externalId;
    }

    public void setExternalId(String externalId) {
        this.externalId = externalId;
    }

    @Column(name = "name")
    private String name;

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @ManyToOne
    @JoinColumn(name = "sdlc_system_id")
    @NotNull
    private SdlcSystem sdlcSystem;

    public SdlcSystem getSdlcSystem() {
        return this.sdlcSystem;
    }

    public void setSdlcSystem(SdlcSystem sdlcSystem) {
        this.sdlcSystem = sdlcSystem;
    }

    @Column(name = "created_date", nullable = false)
    @CreatedDate
    private Instant createdDate;

    public Instant getCreatedDate() {
        return this.createdDate;
    }

    public void setCreatedDate(Instant createdDate) {
        this.createdDate = createdDate;
    }

    @Column(name = "last_modified_date", nullable = false)
    @LastModifiedDate
    private Instant lastModifiedDate;

    public Instant getLastModifiedDate() {
        return this.lastModifiedDate;
    }

    public void setLastModifiedDate(Instant lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }

}
    @Data
@Entity
@Table(name = "sdlc_system")
@EntityListeners(AuditingEntityListener.class)
public class SdlcSystem {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @NotEmpty
    @URL
    @Column(name = "base_url", nullable = false)
    private String baseUrl;

    public String getBaseUrl() {
        return this.baseUrl;
    }

    public void setBaseUrl(String baseUrl) {
        this.baseUrl = baseUrl;
    }

    @Column(name = "description")
    private String description;

    public String getDescription() {
        return this.description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Column(name = "created_date", nullable = false)
    @CreatedDate
    private Instant createdDate;

    public Instant getCreatedDate() {
        return this.createdDate;
    }

    public void setCreatedDate(Instant createdDate) {
        this.createdDate = createdDate;
    }

    @Column(name = "last_modified_date", nullable = false)
    @LastModifiedDate
    private Instant lastModifiedDate;

    public Instant getLastModifiedDate() {
        return this.lastModifiedDate;
    }

    public void setLastModifiedDate(Instant lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }

}

@Repository
public interface ProjectRepository extends JpaRepository<Project, Long> {

  Optional<Project> findBySdlcSystemIdAndId(long sdlcSystemId, long projectId);

  Optional<Project> findById(long projectId);

}
@Repository
public interface SdlcSystemRepository extends JpaRepository<SdlcSystem, Long> {

   Optional<SdlcSystem> findById(long systemId);

}```

**ProjectService.java**

    @Service
public interface SdlcService {

    Optional<SdlcSystem> findById(Long systemId);
}
public class SdlcServiceImpl {

   @Autowired
   private SdlcSystemRepository sdlcSystemRepository;

   SdlcSystem findById(Long systemId) {
       return sdlcSystemRepository.findById(systemId).orElseThrow(
               () -> new RuntimeException("Value Not found for class" + SdlcSystem.class + " and id: " + systemId));
   }
}
    @SpringBootApplication
public class RestapiApplication {

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

    @RestController
@RequestMapping(ProjectRestController.ENDPOINT)
@Api(produces = MediaType.APPLICATION_JSON_VALUE, tags = "Project")
public class ProjectRestController {

    public static final String ENDPOINT = "/api/v2/projects";
    public static final String ENDPOINT_ID = "/{id}";
    public static final String PATH_VARIABLE_ID = "id";
    public static final String ENDPOINT_SYSTEM_ID = "/{systemId}/projects";

    private static final String API_PARAM_ID = "ID";
    
    @Autowired
    private SdlcService sdlcService;

    @Autowired
    private ProjectService projectService;

    @ApiOperation("Get a Project")
    @GetMapping(ENDPOINT_ID)
    public Project getProject(
            @ApiParam(name = API_PARAM_ID, required = true) @PathVariable(PATH_VARIABLE_ID) final long projectId) {
        return projectService.getProject(projectId);
    }

    @ApiOperation("Create a Project")
    @PostMapping(ENDPOINT_SYSTEM_ID)
    public Project createProject(@PathVariable(value = "systemId") Long systemId, @Valid @RequestBody Project project) {
        sdlcService.findById(systemId).ifPresent(project::setSdlcSystem);
        return projectService.saveProject(project);
    }
}
    @Entity
@lombok.Data
@Table(name = "project")
@EntityListeners(AuditingEntityListener.class)
public class Project {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    public long getId() {
        return this.id;
    }

    public void setId(long id) {
        this.id = id;
    }

    @Column(name = "external_id", nullable = false)
    @NotBlank
    private String externalId;

    public String getExternalId() {
        return this.externalId;
    }

    public void setExternalId(String externalId) {
        this.externalId = externalId;
    }

    @Column(name = "name")
    private String name;

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @ManyToOne
    @JoinColumn(name = "sdlc_system_id")
    @NotNull
    private SdlcSystem sdlcSystem;

    public SdlcSystem getSdlcSystem() {
        return this.sdlcSystem;
    }

    public void setSdlcSystem(SdlcSystem sdlcSystem) {
        this.sdlcSystem = sdlcSystem;
    }

    @Column(name = "created_date", nullable = false)
    @CreatedDate
    private Instant createdDate;

    public Instant getCreatedDate() {
        return this.createdDate;
    }

    public void setCreatedDate(Instant createdDate) {
        this.createdDate = createdDate;
    }

    @Column(name = "last_modified_date", nullable = false)
    @LastModifiedDate
    private Instant lastModifiedDate;

    public Instant getLastModifiedDate() {
        return this.lastModifiedDate;
    }

    public void setLastModifiedDate(Instant lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }

}
    @Data
@Entity
@Table(name = "sdlc_system")
@EntityListeners(AuditingEntityListener.class)
public class SdlcSystem {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @NotEmpty
    @URL
    @Column(name = "base_url", nullable = false)
    private String baseUrl;

    public String getBaseUrl() {
        return this.baseUrl;
    }

    public void setBaseUrl(String baseUrl) {
        this.baseUrl = baseUrl;
    }

    @Column(name = "description")
    private String description;

    public String getDescription() {
        return this.description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Column(name = "created_date", nullable = false)
    @CreatedDate
    private Instant createdDate;

    public Instant getCreatedDate() {
        return this.createdDate;
    }

    public void setCreatedDate(Instant createdDate) {
        this.createdDate = createdDate;
    }

    @Column(name = "last_modified_date", nullable = false)
    @LastModifiedDate
    private Instant lastModifiedDate;

    public Instant getLastModifiedDate() {
        return this.lastModifiedDate;
    }

    public void setLastModifiedDate(Instant lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }

}

@Repository
public interface ProjectRepository extends JpaRepository<Project, Long> {

  Optional<Project> findBySdlcSystemIdAndId(long sdlcSystemId, long projectId);

  Optional<Project> findById(long projectId);

}
@Repository
public interface SdlcSystemRepository extends JpaRepository<SdlcSystem, Long> {

   Optional<SdlcSystem> findById(long systemId);

}```

**ProjectService.java**

    @Service
public interface SdlcService {

    Optional<SdlcSystem> findById(Long systemId);
}
public class SdlcServiceImpl {

   @Autowired
   private SdlcSystemRepository sdlcSystemRepository;

   SdlcSystem findById(Long systemId) {
       return sdlcSystemRepository.findById(systemId).orElseThrow(
               () -> new RuntimeException("Value Not found for class" + SdlcSystem.class + " and id: " + systemId));
   }
}
    @SpringBootApplication
public class RestapiApplication {

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

    @RestController
@RequestMapping(ProjectRestController.ENDPOINT)
@Api(produces = MediaType.APPLICATION_JSON_VALUE, tags = "Project")
public class ProjectRestController {

    public static final String ENDPOINT = "/api/v2/projects";
    public static final String ENDPOINT_ID = "/{id}";
    public static final String PATH_VARIABLE_ID = "id";
    public static final String ENDPOINT_SYSTEM_ID = "/{systemId}/projects";

    private static final String API_PARAM_ID = "ID";
    
    @Autowired
    private SdlcService sdlcService;

    @Autowired
    private ProjectService projectService;

    @ApiOperation("Get a Project")
    @GetMapping(ENDPOINT_ID)
    public Project getProject(
            @ApiParam(name = API_PARAM_ID, required = true) @PathVariable(PATH_VARIABLE_ID) final long projectId) {
        return projectService.getProject(projectId);
    }

    @ApiOperation("Create a Project")
    @PostMapping(ENDPOINT_SYSTEM_ID)
    public Project createProject(@PathVariable(value = "systemId") Long systemId, @Valid @RequestBody Project project) {
        sdlcService.findById(systemId).ifPresent(project::setSdlcSystem);
        return projectService.saveProject(project);
    }
}
    @Entity
@lombok.Data
@Table(name = "project")
@EntityListeners(AuditingEntityListener.class)
public class Project {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    public long getId() {
        return this.id;
    }

    public void setId(long id) {
        this.id = id;
    }

    @Column(name = "external_id", nullable = false)
    @NotBlank
    private String externalId;

    public String getExternalId() {
        return this.externalId;
    }

    public void setExternalId(String externalId) {
        this.externalId = externalId;
    }

    @Column(name = "name")
    private String name;

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @ManyToOne
    @JoinColumn(name = "sdlc_system_id")
    @NotNull
    private SdlcSystem sdlcSystem;

    public SdlcSystem getSdlcSystem() {
        return this.sdlcSystem;
    }

    public void setSdlcSystem(SdlcSystem sdlcSystem) {
        this.sdlcSystem = sdlcSystem;
    }

    @Column(name = "created_date", nullable = false)
    @CreatedDate
    private Instant createdDate;

    public Instant getCreatedDate() {
        return this.createdDate;
    }

    public void setCreatedDate(Instant createdDate) {
        this.createdDate = createdDate;
    }

    @Column(name = "last_modified_date", nullable = false)
    @LastModifiedDate
    private Instant lastModifiedDate;

    public Instant getLastModifiedDate() {
        return this.lastModifiedDate;
    }

    public void setLastModifiedDate(Instant lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }

}
    @Data
@Entity
@Table(name = "sdlc_system")
@EntityListeners(AuditingEntityListener.class)
public class SdlcSystem {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @NotEmpty
    @URL
    @Column(name = "base_url", nullable = false)
    private String baseUrl;

    public String getBaseUrl() {
        return this.baseUrl;
    }

    public void setBaseUrl(String baseUrl) {
        this.baseUrl = baseUrl;
    }

    @Column(name = "description")
    private String description;

    public String getDescription() {
        return this.description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Column(name = "created_date", nullable = false)
    @CreatedDate
    private Instant createdDate;

    public Instant getCreatedDate() {
        return this.createdDate;
    }

    public void setCreatedDate(Instant createdDate) {
        this.createdDate = createdDate;
    }

    @Column(name = "last_modified_date", nullable = false)
    @LastModifiedDate
    private Instant lastModifiedDate;

    public Instant getLastModifiedDate() {
        return this.lastModifiedDate;
    }

    public void setLastModifiedDate(Instant lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }

}

@Repository
public interface ProjectRepository extends JpaRepository<Project, Long> {

  Optional<Project> findBySdlcSystemIdAndId(long sdlcSystemId, long projectId);

  Optional<Project> findById(long projectId);

}
@Repository
public interface SdlcSystemRepository extends JpaRepository<SdlcSystem, Long> {

   Optional<SdlcSystem> findById(long systemId);

}```

**ProjectService.java**

    @Service
public interface SdlcService {

    Optional<SdlcSystem> findById(Long systemId);
}
public class SdlcServiceImpl {

   @Autowired
   private SdlcSystemRepository sdlcSystemRepository;

   SdlcSystem findById(Long systemId) {
       return sdlcSystemRepository.findById(systemId).orElseThrow(
               () -> new RuntimeException("Value Not found for class" + SdlcSystem.class + " and id: " + systemId));
   }
}
    @SpringBootApplication
public class RestapiApplication {

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

    @RestController
@RequestMapping(ProjectRestController.ENDPOINT)
@Api(produces = MediaType.APPLICATION_JSON_VALUE, tags = "Project")
public class ProjectRestController {

    public static final String ENDPOINT = "/api/v2/projects";
    public static final String ENDPOINT_ID = "/{id}";
    public static final String PATH_VARIABLE_ID = "id";
    public static final String ENDPOINT_SYSTEM_ID = "/{systemId}/projects";

    private static final String API_PARAM_ID = "ID";
    
    @Autowired
    private SdlcService sdlcService;

    @Autowired
    private ProjectService projectService;

    @ApiOperation("Get a Project")
    @GetMapping(ENDPOINT_ID)
    public Project getProject(
            @ApiParam(name = API_PARAM_ID, required = true) @PathVariable(PATH_VARIABLE_ID) final long projectId) {
        return projectService.getProject(projectId);
    }

    @ApiOperation("Create a Project")
    @PostMapping(ENDPOINT_SYSTEM_ID)
    public Project createProject(@PathVariable(value = "systemId") Long systemId, @Valid @RequestBody Project project) {
        sdlcService.findById(systemId).ifPresent(project::setSdlcSystem);
        return projectService.saveProject(project);
    }
}
    @Entity
@lombok.Data
@Table(name = "project")
@EntityListeners(AuditingEntityListener.class)
public class Project {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    public long getId() {
        return this.id;
    }

    public void setId(long id) {
        this.id = id;
    }

    @Column(name = "external_id", nullable = false)
    @NotBlank
    private String externalId;

    public String getExternalId() {
        return this.externalId;
    }

    public void setExternalId(String externalId) {
        this.externalId = externalId;
    }

    @Column(name = "name")
    private String name;

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @ManyToOne
    @JoinColumn(name = "sdlc_system_id")
    @NotNull
    private SdlcSystem sdlcSystem;

    public SdlcSystem getSdlcSystem() {
        return this.sdlcSystem;
    }

    public void setSdlcSystem(SdlcSystem sdlcSystem) {
        this.sdlcSystem = sdlcSystem;
    }

    @Column(name = "created_date", nullable = false)
    @CreatedDate
    private Instant createdDate;

    public Instant getCreatedDate() {
        return this.createdDate;
    }

    public void setCreatedDate(Instant createdDate) {
        this.createdDate = createdDate;
    }

    @Column(name = "last_modified_date", nullable = false)
    @LastModifiedDate
    private Instant lastModifiedDate;

    public Instant getLastModifiedDate() {
        return this.lastModifiedDate;
    }

    public void setLastModifiedDate(Instant lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }

}
    @Data
@Entity
@Table(name = "sdlc_system")
@EntityListeners(AuditingEntityListener.class)
public class SdlcSystem {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @NotEmpty
    @URL
    @Column(name = "base_url", nullable = false)
    private String baseUrl;

    public String getBaseUrl() {
        return this.baseUrl;
    }

    public void setBaseUrl(String baseUrl) {
        this.baseUrl = baseUrl;
    }

    @Column(name = "description")
    private String description;

    public String getDescription() {
        return this.description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Column(name = "created_date", nullable = false)
    @CreatedDate
    private Instant createdDate;

    public Instant getCreatedDate() {
        return this.createdDate;
    }

    public void setCreatedDate(Instant createdDate) {
        this.createdDate = createdDate;
    }

    @Column(name = "last_modified_date", nullable = false)
    @LastModifiedDate
    private Instant lastModifiedDate;

    public Instant getLastModifiedDate() {
        return this.lastModifiedDate;
    }

    public void setLastModifiedDate(Instant lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }

}

@Repository
public interface ProjectRepository extends JpaRepository<Project, Long> {

  Optional<Project> findBySdlcSystemIdAndId(long sdlcSystemId, long projectId);

  Optional<Project> findById(long projectId);

}
@Repository
public interface SdlcSystemRepository extends JpaRepository<SdlcSystem, Long> {

   Optional<SdlcSystem> findById(long systemId);

}```

**ProjectService.java**

    @Service
public interface SdlcService {

    Optional<SdlcSystem> findById(Long systemId);
}
public class SdlcServiceImpl {

   @Autowired
   private SdlcSystemRepository sdlcSystemRepository;

   SdlcSystem findById(Long systemId) {
       return sdlcSystemRepository.findById(systemId).orElseThrow(
               () -> new RuntimeException("Value Not found for class" + SdlcSystem.class + " and id: " + systemId));
   }
}
    @SpringBootApplication
public class RestapiApplication {

    public static void main(String[] args) {
        SpringApplication.run(RestapiApplication.class, args);
    }
}
公共接口项目服务{

Project getProject(long id);

Project saveProject(Project project);
}

SdlcService.java

    @RestController
@RequestMapping(ProjectRestController.ENDPOINT)
@Api(produces = MediaType.APPLICATION_JSON_VALUE, tags = "Project")
public class ProjectRestController {

    public static final String ENDPOINT = "/api/v2/projects";
    public static final String ENDPOINT_ID = "/{id}";
    public static final String PATH_VARIABLE_ID = "id";
    public static final String ENDPOINT_SYSTEM_ID = "/{systemId}/projects";

    private static final String API_PARAM_ID = "ID";
    
    @Autowired
    private SdlcService sdlcService;

    @Autowired
    private ProjectService projectService;

    @ApiOperation("Get a Project")
    @GetMapping(ENDPOINT_ID)
    public Project getProject(
            @ApiParam(name = API_PARAM_ID, required = true) @PathVariable(PATH_VARIABLE_ID) final long projectId) {
        return projectService.getProject(projectId);
    }

    @ApiOperation("Create a Project")
    @PostMapping(ENDPOINT_SYSTEM_ID)
    public Project createProject(@PathVariable(value = "systemId") Long systemId, @Valid @RequestBody Project project) {
        sdlcService.findById(systemId).ifPresent(project::setSdlcSystem);
        return projectService.saveProject(project);
    }
}
    @Entity
@lombok.Data
@Table(name = "project")
@EntityListeners(AuditingEntityListener.class)
public class Project {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    public long getId() {
        return this.id;
    }

    public void setId(long id) {
        this.id = id;
    }

    @Column(name = "external_id", nullable = false)
    @NotBlank
    private String externalId;

    public String getExternalId() {
        return this.externalId;
    }

    public void setExternalId(String externalId) {
        this.externalId = externalId;
    }

    @Column(name = "name")
    private String name;

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @ManyToOne
    @JoinColumn(name = "sdlc_system_id")
    @NotNull
    private SdlcSystem sdlcSystem;

    public SdlcSystem getSdlcSystem() {
        return this.sdlcSystem;
    }

    public void setSdlcSystem(SdlcSystem sdlcSystem) {
        this.sdlcSystem = sdlcSystem;
    }

    @Column(name = "created_date", nullable = false)
    @CreatedDate
    private Instant createdDate;

    public Instant getCreatedDate() {
        return this.createdDate;
    }

    public void setCreatedDate(Instant createdDate) {
        this.createdDate = createdDate;
    }

    @Column(name = "last_modified_date", nullable = false)
    @LastModifiedDate
    private Instant lastModifiedDate;

    public Instant getLastModifiedDate() {
        return this.lastModifiedDate;
    }

    public void setLastModifiedDate(Instant lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }

}
    @Data
@Entity
@Table(name = "sdlc_system")
@EntityListeners(AuditingEntityListener.class)
public class SdlcSystem {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @NotEmpty
    @URL
    @Column(name = "base_url", nullable = false)
    private String baseUrl;

    public String getBaseUrl() {
        return this.baseUrl;
    }

    public void setBaseUrl(String baseUrl) {
        this.baseUrl = baseUrl;
    }

    @Column(name = "description")
    private String description;

    public String getDescription() {
        return this.description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Column(name = "created_date", nullable = false)
    @CreatedDate
    private Instant createdDate;

    public Instant getCreatedDate() {
        return this.createdDate;
    }

    public void setCreatedDate(Instant createdDate) {
        this.createdDate = createdDate;
    }

    @Column(name = "last_modified_date", nullable = false)
    @LastModifiedDate
    private Instant lastModifiedDate;

    public Instant getLastModifiedDate() {
        return this.lastModifiedDate;
    }

    public void setLastModifiedDate(Instant lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }

}

@Repository
public interface ProjectRepository extends JpaRepository<Project, Long> {

  Optional<Project> findBySdlcSystemIdAndId(long sdlcSystemId, long projectId);

  Optional<Project> findById(long projectId);

}
@Repository
public interface SdlcSystemRepository extends JpaRepository<SdlcSystem, Long> {

   Optional<SdlcSystem> findById(long systemId);

}```

**ProjectService.java**

    @Service
public interface SdlcService {

    Optional<SdlcSystem> findById(Long systemId);
}
public class SdlcServiceImpl {

   @Autowired
   private SdlcSystemRepository sdlcSystemRepository;

   SdlcSystem findById(Long systemId) {
       return sdlcSystemRepository.findById(systemId).orElseThrow(
               () -> new RuntimeException("Value Not found for class" + SdlcSystem.class + " and id: " + systemId));
   }
}
    @SpringBootApplication
public class RestapiApplication {

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

    @RestController
@RequestMapping(ProjectRestController.ENDPOINT)
@Api(produces = MediaType.APPLICATION_JSON_VALUE, tags = "Project")
public class ProjectRestController {

    public static final String ENDPOINT = "/api/v2/projects";
    public static final String ENDPOINT_ID = "/{id}";
    public static final String PATH_VARIABLE_ID = "id";
    public static final String ENDPOINT_SYSTEM_ID = "/{systemId}/projects";

    private static final String API_PARAM_ID = "ID";
    
    @Autowired
    private SdlcService sdlcService;

    @Autowired
    private ProjectService projectService;

    @ApiOperation("Get a Project")
    @GetMapping(ENDPOINT_ID)
    public Project getProject(
            @ApiParam(name = API_PARAM_ID, required = true) @PathVariable(PATH_VARIABLE_ID) final long projectId) {
        return projectService.getProject(projectId);
    }

    @ApiOperation("Create a Project")
    @PostMapping(ENDPOINT_SYSTEM_ID)
    public Project createProject(@PathVariable(value = "systemId") Long systemId, @Valid @RequestBody Project project) {
        sdlcService.findById(systemId).ifPresent(project::setSdlcSystem);
        return projectService.saveProject(project);
    }
}
    @Entity
@lombok.Data
@Table(name = "project")
@EntityListeners(AuditingEntityListener.class)
public class Project {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    public long getId() {
        return this.id;
    }

    public void setId(long id) {
        this.id = id;
    }

    @Column(name = "external_id", nullable = false)
    @NotBlank
    private String externalId;

    public String getExternalId() {
        return this.externalId;
    }

    public void setExternalId(String externalId) {
        this.externalId = externalId;
    }

    @Column(name = "name")
    private String name;

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @ManyToOne
    @JoinColumn(name = "sdlc_system_id")
    @NotNull
    private SdlcSystem sdlcSystem;

    public SdlcSystem getSdlcSystem() {
        return this.sdlcSystem;
    }

    public void setSdlcSystem(SdlcSystem sdlcSystem) {
        this.sdlcSystem = sdlcSystem;
    }

    @Column(name = "created_date", nullable = false)
    @CreatedDate
    private Instant createdDate;

    public Instant getCreatedDate() {
        return this.createdDate;
    }

    public void setCreatedDate(Instant createdDate) {
        this.createdDate = createdDate;
    }

    @Column(name = "last_modified_date", nullable = false)
    @LastModifiedDate
    private Instant lastModifiedDate;

    public Instant getLastModifiedDate() {
        return this.lastModifiedDate;
    }

    public void setLastModifiedDate(Instant lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }

}
    @Data
@Entity
@Table(name = "sdlc_system")
@EntityListeners(AuditingEntityListener.class)
public class SdlcSystem {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @NotEmpty
    @URL
    @Column(name = "base_url", nullable = false)
    private String baseUrl;

    public String getBaseUrl() {
        return this.baseUrl;
    }

    public void setBaseUrl(String baseUrl) {
        this.baseUrl = baseUrl;
    }

    @Column(name = "description")
    private String description;

    public String getDescription() {
        return this.description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Column(name = "created_date", nullable = false)
    @CreatedDate
    private Instant createdDate;

    public Instant getCreatedDate() {
        return this.createdDate;
    }

    public void setCreatedDate(Instant createdDate) {
        this.createdDate = createdDate;
    }

    @Column(name = "last_modified_date", nullable = false)
    @LastModifiedDate
    private Instant lastModifiedDate;

    public Instant getLastModifiedDate() {
        return this.lastModifiedDate;
    }

    public void setLastModifiedDate(Instant lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }

}

@Repository
public interface ProjectRepository extends JpaRepository<Project, Long> {

  Optional<Project> findBySdlcSystemIdAndId(long sdlcSystemId, long projectId);

  Optional<Project> findById(long projectId);

}
@Repository
public interface SdlcSystemRepository extends JpaRepository<SdlcSystem, Long> {

   Optional<SdlcSystem> findById(long systemId);

}```

**ProjectService.java**

    @Service
public interface SdlcService {

    Optional<SdlcSystem> findById(Long systemId);
}
public class SdlcServiceImpl {

   @Autowired
   private SdlcSystemRepository sdlcSystemRepository;

   SdlcSystem findById(Long systemId) {
       return sdlcSystemRepository.findById(systemId).orElseThrow(
               () -> new RuntimeException("Value Not found for class" + SdlcSystem.class + " and id: " + systemId));
   }
}
    @SpringBootApplication
public class RestapiApplication {

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

启动ApplicationContext时出错。要显示条件报告,请在启用“调试”的情况下重新运行应用程序。 2020-09-12 19:35:17.256错误73258---[main]o.s.b.d.记录故障分析报告者:

应用程序无法启动

说明:

com.restapi.restapi.Controller.ProjectRestController中的字段sdlcService需要找不到类型为“com.restapi.restapi.Service.sdlcService”的bean

注入点具有以下注释: -@org.springframework.beans.factory.annotation.Autowired(必需=true)

行动:


考虑在配置中定义“com.restapi.restapi.Service.SdlcService”类型的bean。

您应该使用
@Service
注释
sdlcserviceinpl
(而不是它的接口)

@服务

指示带注释的类是“服务”(…)

此注释用作@Component的专门化,允许通过类路径扫描自动检测实现类


我试过了。projectService工作正常,但sdlcservice给出了相同的错误。
SdlcServiceImpl
是否与
重新启动应用程序在子包(或同一包)中?如果不是,默认情况下,
@SpringBootApplication
不会扫描它。Impl位于子包“Service”中。但是ProjectserviceImpl正在被扫描,而不是SdlcServiceImpl