当前位置: 首页 > 知识库问答 >
问题:

无法将存储库从外部Jar自动连接到Spring Boot App

邓威
2023-03-14

我已经将应用程序和存储库接口的所有实体打包到一个jar中。存储库是用@Repository注释编写的:

@Repository
public interface InternalUserRepository extends JpaRepository<InternalUser, Long>{

}

我已经在我的Spring启动应用程序中包含了这个jar文件,并试图像这样从控制器自动连接接口:

@RestController
public class AuthenticationController {

    @Autowired
    AuthenticationService authenticationService;

    @Autowired
    InternalUserRepository internalUserRepository;


    @GetMapping("/")
    public String home() {
        return "Hello World!";
    }

}

我的主要应用程序类是这样编写的:

@SpringBootApplication
@EnableJpaRepositories
@ComponentScan("com.cdac.dao.cdacdao.*")
public class CdacAuthenticationMgntApplication {

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

存储库没有自动连接。当我启动Spring boor应用程序时,我得到以下错误:

***************************
APPLICATION FAILED TO START
***************************

Description:

Field internalUserRepository in 
com.cdac.user.cdacauthenticationmgnt.controller.AuthenticationController required a bean of type 'com.cdac.dao.cdacdao.repository.InternalUserRepository' that could not be found.


Action:

Consider defining a bean of type 'com.cdac.dao.cdacdao.repository.InternalUserRepository' in your configuration.

有人尝试过类似的架构吗?

共有3个答案

杭涵映
2023-03-14

Annotation@SpringBootApplication支持所有功能,因此我们不需要手动配置

@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
        @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
        @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
邓阳炎
2023-03-14

我记得,@ComponentScan应该采取一个完整的路径到一个包,所以我认为你的包。*不工作。

请尝试使用类型安全组件扫描:

// You refer to your packages of your base project and your module here. 
// Choose the class so that their package is cover all child package
@SpringBootApplication(scanBasePackageClasses = {xxx. InternalUserRepository.class, xxx.CdacAuthenticationMgntApplication.class}) 

@EnableJpaRepositories
// No need to explicit @ComponentScan
public class CdacAuthenticationMgntApplication {

或者你可以试试@EnableJpaRepositories(“com.cdac.dao.cdacdao”)

无论哪种方式,您都应该选择最外层包中的类(Spring还将尝试在这些组件扫描包的子包中找到bean)

司英彦
2023-03-14

如果JPA存储库与Spring Boot应用程序类位于不同的包中,则必须在EnableJpaRepositories注释中指定该包,而不是组件

@EnableJpaRepositories("com.cdac.dao.cdacdao")

您在ComponentScan上指定的包用于将类检测为常规Springbean,而不是存储库接口。

 类似资料:
  • 我在Spring Boot上还是新手,我在mongoDB数据库中使用Spring-Boot添加了一个名为文章的文档,我想在该文章中添加注释。但是Spring-boot不能在我的应用程序中自动连接我的存储库。 下面是我的Repository类,它实现了ArticleRepositoryCustom接口,该接口包含一个OuterComment方法。 文章库 这是我的Springboot应用程序课程 当

  • 问题内容: 我正在尝试在github仓库上连接詹金斯。 当我指定Repo URL jenkins时,返回以下错误消息: 无法连接到存储库:命令“ git ls-remote -h git@github.com:adolfosrs / jenkins-test.git HEAD”返回状态码128:stdout:stderr:主机密钥验证失败。致命:无法从远程存储库读取。请确保您具有正确的访问权限,并

  • 我按照这里给出的步骤从外部Jenkins实例连接到openshift在线代理。然而,当我提供OpenShift凭据时,即使我似乎拥有正确的凭据,登录也无法通过。消息“无法请求https://openshift.redhat.com/broker/rest/domains:OpenShift Online(下一代)开发者预览版在这里!我们不会接受OpenShift Online(v2)平台上的新用户

  • 我与SpringBoot和JPA合作。我收到一个无法完成的错误。 这是我的主要课程: 这是我的班级失败的原因: 这是类: 这是错误消息: 错误创建bean的名称'请求LoggerImpl':注入自动生成的依赖失败; 无法自动关联字段:专用com。存储库。请求logdao.com。记录器。impl。RequestLoggerImpl。请求logdao;嵌套的异常是org。springframewor

  • 我已经安装了EclipseIDEforJ2EE,现在我正在尝试安装WTP。我在这里和其他地方都试过了。。 没有代理问题,因为我可以通过内部网络浏览器打开存储库网站。 我尝试添加"-Djava.net.preferIPv4Stack=true"到eclipse.ini. 我尝试过清除缓存,一个不同的工作区。。。顺便说一下,我是个十足的新手。以防万一我错过了一些明显的东西。 无法连接到存储库http:

  • 我见过几个问题[1][2][3]有点类似于这一点,但没有一个答案产生任何成功。 所以,以下是我看到的问题: 1)pom表明它无法连接到本地。m2存储库。 6)用Java1.7而不是1.8启动Intellij 7)卸载和重新安装Maven、Java和Intellij 非常感谢任何帮助。