自己开发一个jar,想给其他项目直接调用。

都是springboot工程,jar包里有有些类带了spring的注解,系统能被加载到spring中。

之前也这样用过,没有发现什么问题,这次发现pom引用了,程序中编译也没有问题,但是springboot启动以后不加载。jar中的bean。

最后找到了问题的根本原因:

SpringBootApplication启动时会默认扫描主类当前包及子包,之前之所以成功了,是因为恰巧引用的包 package路径一样。

那么如何让spring扫描主类当前包外的其他包呢?

Class<?>[] exclude() default {};
String[] excludeName() default {};
String[] scanBasePackages() default {};
Class<?>[] scanBasePackageClasses() default {};

这一组属性可以扫描主类当前包外的其他包或不扫描当前包下的特定包或类。

例如:

@SpringBootApplication(excludeName=("com.tt.service.UserService"), scanBasePackages=("com.tt"))

目前只要scanBasePackages就够用了。

网上查的时候看到 @EnableFeignClients 也有类似的属性,还没有用过。

String[] basePackages() default {};
Class<?>[] basePackageClasses() default {};
Class<?>[] defaultConfiguration() default {};
Class<?>[] clients() default {};

总结:@SpringBootApplicatoin是用的@ComponentScan扫描,扫描的是Component,包括@Component, @Controller, @Service, @Repository等,而@EnableFeignClients扫描的是@FeignClient,所以在指定扫描路径时要分别指定


参考:https://blog.csdn.net/l1h2l3/article/details/73484806

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐