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

Spring Boot问题扫描依赖项中的包

方弘
2023-03-14

我正在开发一个叫做MyApp的应用程序。以前,我工作场所的每个应用程序都有自己的一套标准服务和存储库;我想做的是将这些服务和存储库移动到一个JAR中,我们称之为托管在GitHub包中的MyServices,应用程序可以导入这些包,这样当服务发生更改时,父应用程序可以简单地更新JAR版本,而不是复制和粘贴更改。

我在MyServices中创建了一个运行良好的测试环境。当我尝试将MyServices导入MyApp并运行它时,问题就会出现。我只是不知道如何用Spring正确扫描服务。我几乎所有的服务都出现了许多错误,例如:

com.mycompany.myservices.backend.security.LoginSuccessHandler 中的 Field userRepository 需要一个类型为 'com.mycompany.myservices.backend.data.repositories.UserRepository' 的 bean,当html" target="_blank">用户存储库肯定在包中定义时,或者:

< code >创建名为“com . my company . myapp . ui . views . admin . loginview”的bean时出错:通过构造函数参数0表示的不满足的依赖关系;嵌套的异常是org . spring framework . beans . factory . nosuchbeandefficionexception:没有类型为“com . my company . my services . back end . data . services . userservice”的合格bean可用:应至少有一个符合autowire候选资格的bean。依赖项注释:{}当UserService 100%存在,或者其他人声称:

com.mycompany.myservices.backend.data.AppDB 中构造函数的参数 0 需要一个类型为 'org.springframework.data.mongodb.core.MongoTemplate' 的 bean,而我实际上在主 myApp 包中定义了一个 MongoTemplate bean。似乎Spring没有以正确的顺序扫描事物,我不知道如何解决它。

这是我的应用程序。java:

@SpringBootApplication(
        exclude = {ErrorMvcAutoConfiguration.class, SecurityAutoConfiguration.class,
                MongoAutoConfiguration.class, MongoDataAutoConfiguration.class},
        scanBasePackages = {"com.mycompany.myservices.backend"})
@EnableMongoRepositories(basePackageClasses = { PrimaryMongoConfig.class, SecondaryMongoConfig.class })
@EntityScan(basePackageClasses = { User.class })

public class  Application extends SpringBootServletInitializer {

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

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
}

重申一下,这种设置在包含自己的服务副本的应用程序中工作得非常好。当它们处于JAR依赖关系中时,它没有正确扫描,我不确定为什么,因为它应该通过scanBasePackages扫描。想法?

共有1个答案

邵文乐
2023-03-14

尝试将注释@EnableJpaRepositories添加到应用程序类:

@EnableJpaRepositories(basePackages =
    "your.package.of.repository"
)
 类似资料:
  • 我正在使用一个带有spring boot 2.0.0.rc1的多项目分级器。我的子项目之一是SpringBoot应用程序,其中包含了我的集成测试。 集成测试用WebEnvironment.random_port标记为@springboottest。由于未解析的依赖关系(在另一个子项目中声明的服务,的同级),测试失败,使用了gradle命令行,但在Eclipse IDE中成功。 如果有人有主意?如何

  • 我有两个do-while循环用于进行自定义输入验证。问题是它会自动进入下一个do while循环。正确插入名称后,我必须放置一个新的下一行():name=scanner。nextLine() 我知道当光标停留在那里时,nextLine()会出现“小故障”,您必须调用nextLine()才能继续。资料来源:https://www.geeksforgeeks.org/why-is-scanner-sk

  • 问题内容: 如何将扫描仪的定界符设置为;或换行? 我试过: 但这不起作用。 问题答案: 通常,在模式中,您需要将翻倍。 所以,尝试 要么 编辑 :如果是问题,则可能要尝试以下操作: 它匹配的一个或多个,和。 注意 :我还没有尝试过这些。

  • 问题内容: 我正在尝试读取具有多个单词的字符串,即。洛杉矶或纽约市。如果有两个词并将它们分割在变量之间,则使用scanner.next()进行“出发”和“到达”只会读取第一个。nextLine()也不是很幸运。这是我的代码: 我知道这很简单,但我还没有弄清楚。 这是上面的代码的输入/输出: 输入航班号:29 输入出发城市:(立即跳至下一行) 输入到达城市: -—我真正想要的是---- 输入航班号:

  • 一段时间以来,我一直在做一个作为拼字字典的编程作业。该程序接受用户的输入,并输出一个包含单词列表的文件,这取决于用户从菜单中请求的内容。我遇到的问题与Scanner.nextLine()有关。 我不是很清楚为什么,但由于某种原因,有时我必须按一次enter键,然后我的代码才会接受我的输入并将其存储为变量。本质上,我最终输入了两次输入。我尝试在代码周围插入Scanner.nextLine()以“占用

  • 我在eclipse中有一个JavaNLP项目(比如X),它在maven中有依赖项 现在,我已经使用JavaSwing为这个项目(x)构建了UI,JavaSwing是eclipse中的另一个项目(比如Y)。 当我运行项目Y(点击按钮时调用项目X)时,会给我带来错误,比如 java.lang.NoClassDefFoundError: edu/stanford/nlp/ie/NER分类文件 我认为这是