我有2个项目,主spring boot项目和第二个spring项目,其中包含@Contollers、@Services等。
我尝试在主项目中使用其中的一些服务。我看到了类似的问题,例如这里、这里、这里和许多其他问题,但它对我不起作用
1)如果我刚刚
@SpringBootApplication
public class App { ... }
然后它无法编译,因为无法从第二个项目中找到服务
2)如果我尝试扫描第二个包
@SpringBootApplication
@ComponentScan("secondPackage")
public class App {}
然后应用程序启动没有错误,但控制器映射根本不起作用。无法解决两个项目的映射。
3)然后我尝试从第二个包中排除控制器,因为我不需要它们,映射仍然不起作用
@ComponentScan(basePackages="secondPackage", excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, value = Controller.class)})
4)然后我尝试扫描特定服务,但在这种情况下,其他资源不可用,我必须包含很多路径
@ComponentScan({"first package", "second package"})
5)最后我尝试制作2个配置文件
@Configuration
@ComponentScan(basePackages = {"mainPackage"})
public class MainConfiguration {
}
@Configuration
@ComponentScan(basePackages="secondPackage",
excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, value = Controller.class)})
public class SecondConfiguration {
}
但我没有找到示例,如何在 SpringApplication.run(App.class, args); 之前准备上下文 然后让应用程序在我的上下文中运行。喜欢
ApplicationContext myContext = new AnnotationConfigApplicationContext(OrderStatusConfiguration.class, ShopRuServicesConfiguration.class);
SpringApplication.run(App.class, myContext, args);
所以请给我一个建议,为什么映射不起作用或者我应该如何从第二个项目中获得正确的自动装配服务!
我很感激任何帮助!谢谢!