Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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 Spring boot未识别rest存储库_Java_Spring_Spring Boot_Spring Data_Spring Data Rest - Fatal编程技术网

Java Spring boot未识别rest存储库

Java Spring boot未识别rest存储库,java,spring,spring-boot,spring-data,spring-data-rest,Java,Spring,Spring Boot,Spring Data,Spring Data Rest,我正在使用SpringDataREST(1.3.5.RELEASE)创建一个简单的rest服务。 但是,当我的应用程序配置位于不同的包级别时,存储库/JPA实体没有被识别/注册 以下是我的示例项目结构: <source.root> - package1 - Application.java - package2 - RepositoryService.java - Model.java -包装1 -Application.java -包装2 -Reposit

我正在使用SpringDataREST(1.3.5.RELEASE)创建一个简单的rest服务。 但是,当我的应用程序配置位于不同的包级别时,存储库/JPA实体没有被识别/注册

以下是我的示例项目结构:

<source.root>
 - package1
   - Application.java
 - package2
   - RepositoryService.java
   - Model.java

-包装1
-Application.java
-包装2
-RepositoryService.java
-Model.java
在这种情况下,RepositoryService不公开任何rest方法

下面对我的项目结构的更改解决了这个问题

<source.root>
 - package1
   - Application.java
   - package2
     - RepositoryService.java
     - Model.java

-包装1
-Application.java
-包装2
-RepositoryService.java
-Model.java

spring boot应用程序配置必须在顶层出现,以便扫描bean吗?

如果
Application.java
是主要的spring boot类,它很可能使用
@SpringBootApplication
注释

此批注是复合批注,并且在引擎盖下还包含
@ComponentScan
批注

现在组件扫描默认扫描当前包和所有子包。因此,在第一个项目结构中,您从组件扫描中排除了存储库

要解决此问题,您有以下选项:

  • 使用项目结构1并明确定义要扫描的包:
    @SpringBootApplication(scanBasePackages=“package2”)
    。这不是类型安全的
  • 使用项目结构1并从要扫描的包中显式定义类:
    @SpringBootApplication(scanBasePackageClasses=RepositoryService.class)
    。这是比选项1更好的选项,因为它是类型安全的
  • 坚持自以为是的SpringBoot默认设置,并使用项目结构2。 请记住,如果您不尝试与SpringBoot顽固的默认设置作斗争,SpringBoot将是您最好的朋友。除非你有不可战胜的理由

  • 不,应用程序配置不必位于更高的包中。如果您愿意在Application.java上共享注释,我们将能够为您提供更详细的答案。