我正在尝试运行我的基本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);
}
}
项目JAVA
@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;
}
}
SDLC系统。JAVA
@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;
}
}
ProjectRepository。JAVA
@Repository
public interface ProjectRepository extends JpaRepository<Project, Long> {
Optional<Project> findBySdlcSystemIdAndId(long sdlcSystemId, long projectId);
Optional<Project> findById(long projectId);
}
SdlcsystemRepository。JAVA
@Repository
public interface SdlcSystemRepository extends JpaRepository<SdlcSystem, Long> {
Optional<SdlcSystem> findById(long systemId);
}```
**ProjectService.java**
@Service
公共接口项目服务{
Project getProject(long id);
Project saveProject(Project project);
}
**ProjectServiceImpl.java**
``` public class ProjectServiceImpl implements ProjectService {
@Autowired
private ProjectRepository projectRepository;
public Project getProject(long id) {
return projectRepository.findById(id).orElseThrow(
() -> new RuntimeException("Value Not found for class" + Project.class + " and id: " + id));
}
public Project saveProject(Project project) {
try {
return projectRepository.save(project);
} catch (Exception e) {
return null;
}
}
}
SdlcService.java
@Service
public interface SdlcService {
Optional<SdlcSystem> findById(Long systemId);
}
SdlcServiceImpl。JAVA
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));
}
}
重新启动应用程序。JAVA
@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中输入sdlcService。雷斯塔皮。雷斯塔皮。控制器。ProjectRestController需要“com”类型的bean。雷斯塔皮。雷斯塔皮。服务无法找到SdlcService。
注入点有以下注释:-@org.springframework.beans.factory.annotation.自动配电(必需=true)
行动:
考虑定义COM类型的bean。雷斯塔皮。雷斯塔皮。服务配置中的SdlcService。
你应该用@Service
注释SdlcServiceImpl
(而不是它的接口)。
从@Service
javadoc:
指示注释的类是服务(...)
此注释充当@Component的专门化,允许通过类路径扫描自动检测实现类。
我有这样的项目结构: persistence.xml: xml(如您所见,我使用的是上下文类,在这里我将使用JSON): WebAppConfig.class: HolidayController.Class HolidayRepository.Class: 请帮帮我。
我用SpringMVC4开发了一个web应用程序。对于DAO层,我添加了一个类GenericDAO:`public class GenericDAO{ ### 如下所示声明我的DAO会在启动我的应用程序时产生错误: 错误是: 在org。springframework。豆。工厂支持DefaultListableBeanFactory。raiseNoMatchingBeanFound(DefaultL
我正在运行一个JUnit测试,嗯,我的Spring启动项目,我是这样写的: 找到依赖项[com.br.suppcomm.ocp.dao.logindao]得[com.br.suppcomm.ocp.dao.logindao]:需要至少1个具有此依赖项自动候选资格得bean.依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(
我创建了一个Java项目作为其他项目的库,减少了项目之间的代码重复。这个lib项目被导出到jar以包含在Web项目中(WAR,而不是EAR)。 在Web项目中(这些类被移除),所有的类都照常工作,而所有的类都保留在这些项目上──简单和复杂对象(带有生产者和设置的对象)的注入都正常工作。 移除Web项目的这些类并将具有这些相同类的jar添加到Web项目中(在Maven项目中的pom.xml中设置此库
我的问题与注入EntityManager时的WELD-001408未满足依赖项和WELD-001408未满足依赖项不同。虽然这些问题涉及尝试将托管bean注入到无状态EJB中,但我正尝试进行相反的操作。 当我试图将一个@Stateless@Local interfaced bean注入到一个web托管bean中时,我得到了一个“未满足的依赖项”。我正在用各种EJB模块和web模块构建一个EAR,在
我是Spring新手,我刚开始一个Spring MVC CRUD程序,但在尝试了很多方法之后,我一次又一次地面临同样的错误。 这是打印HTTP状态500–内部服务器错误的第一个异常。 ServletException 不满意的依赖 菜豆 聚甲醛 我还更改了依赖项版本,但它仍然不起作用。这是我的代码 配置类 配置初始化器 I数据库配置 我使用Hibernate数据库 模型类 服务类服务类 抽象类 我