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

@ComponentScan来自2个包

陆耀
2023-03-14

我有两个项目,主要的Spring Boot项目和第二个spring项目,其中包含@contollers、@services等。

我试着在主项目中使用这些服务。我看到了类似的问题,比如这里,这里,这里和许多其他的,但对我来说不起作用

@SpringBootApplication
public class App { ... }
@SpringBootApplication
@ComponentScan("secondPackage")
public class App {}
@ComponentScan(basePackages="secondPackage", excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, value = Controller.class)})
@ComponentScan({"first package", "second package"})
@Configuration
@ComponentScan(basePackages = {"mainPackage"})
public class MainConfiguration {

}

@Configuration
@ComponentScan(basePackages="secondPackage", 
        excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, value = Controller.class)})
public class SecondConfiguration {

}
ApplicationContext myContext = new AnnotationConfigApplicationContext(OrderStatusConfiguration.class, ShopRuServicesConfiguration.class);
SpringApplication.run(App.class, myContext, args);

所以请给我一个建议,为什么映射不工作或我应该如何从第二个项目适当的autowire服务!

我很感激你的帮助!谢了!

共有1个答案

张博涛
2023-03-14

1)空注释触发默认组件扫描。这是从被注释类的包开始的

@SpringBootApplication
public class App { ... }

你说它甚至不会编译。

这意味着,您的spring confgiguration通过名称引用了一些不在类路径中的类。

@SpringBootApplication
@ComponentScan("secondPackage")
public class App {}
@SpringBootApplication
@ComponentScan({"package of App","secondPackage"})
public class App {}

如果您的应用程序仍然没有正确地配置服务和映射,您可以微调引用的配置,直到您得到所需的spring上下文。

 类似资料:
  • 是否可以让在整个spring boot项目中工作?现在,当我创建一个新包时,我需要将它添加到注释中,否则将找不到bean。如果允许在项目中到处搜索,是否会导致性能问题或其他问题?

  • 很好的一天!我尝试在AnyLogic 8.7.6中构建网络模型。我有两个具有不同优先级的源(来自第一个源的数据包获得优先级2,来自第二个源的数据包获得优先级1)。来自源的数据包被传输到队列。队列应按优先级对其进行排序。 优先级参数在源代理中定义。 我做了一个简单的实验。源1每秒生成1个代理,源2每秒生成10个代理。我们看到队列是空的:( 我不知道为什么。队列没有根据它们的优先级对它们进行排序。 P

  • 我使用Anaconda安装了,并使用以下命令安装了: 这已成功地将作为一个单独的环境安装到Anaconda3文件夹中: 只要我使用像Spyder或IPython笔记本这样的集成开发环境,我就可以选择哪个Python版本。但是,我无法在PowerShell中使用()。我尝试使用: 但是命令仍然会触发,并且会导致此错误: 我已经尝试了我所知道的或在SO上读到的所有东西,但是我尝试过的任何东西都无法解决

  • 我有两个数据数组:一个是半径值,另一个是该强度下的相应强度读数: e、 g.数据的一小部分。第一列是半径,第二列是强度。 <代码>29.77036614 0.0446427 29.70281027 0.07771409 29.63523525 0.09424901 29.3639355 1.322793 29.29596385 2.321502 29.22783249 2.415751 29.15

  • 我有一个java类,它打开两个Chrome浏览器,分别搜索“测试1”和“测试2”。然而,一旦两个浏览器都打开,只有一个带有谷歌页面的浏览器会搜索“测试1测试2”。 我相信这个问题可能是因为我从父类调用驱动程序 = 新的 WebDriver。但是,我不确定如何解决此问题。 下面是我尝试并行运行的两个方法。 这是我用来调用它们的xml文件。 包含驱动程序的父方法 当前结果:打开两个浏览器,每个浏览器都

  • 问题内容: 我遇到了来自java.util.Calendar的奇怪行为: 我想知道为什么会这样吗? 问题答案: 问题是您要从2013年1月30日开始使用日历。 然后,您将年份设置为2013年-这不是问题。 然后,您将月份设置为1(即2月)。您希望在这里发生什么?实际发生的情况是,它会记住需要将月份设置为1,而 不是 重新计算实际时间值。根据文档(Emphsis我的), 将 在您调用to时重新计算时