在java spring cloud项目中,我们常常会在子模块中创建公共类库,作为驱动包。那么在另外一个子模块中,需要加载配置文件的时候,往往Spring Boot 自动扫描包的时候,只会扫描自己模块下的类。

抛出一个问题

  首先抛出一个问题:如果想要被Spring容器管理的Bean的路径不再Spring Boot 的包扫描路径下,怎么办呢?也就是如何去加载第三方的Bean 呢?

  有两种方式可以解决:
  这里我们使用Swagger的配置来做实验。
  1:首先一个Swagger的配置类:SwaggerConfig
  SwaggerConfig 代码:

@Configuration
@EnableSwagger2
public class SwaggerConfig implements EnvironmentAware {
    private static final Logger log = LoggerFactory.getLogger(SwaggerConfig.class);
    @Autowired
    private Environment env;
    @Value("${swagger.scan.package}")
    private String swaggerScanPackage;

    public SwaggerConfig() {
    }

    @Bean
    public Docket createRestApi() {
        Predicate<String> path = PathSelectors.any();
        if (Arrays.asList(this.env.getActiveProfiles()).contains("prod")) {
            path = PathSelectors.none();
        }

        log.info("####初始化createRestApi####swaggerScanPackage:" + this.swaggerScanPackage);
        log.info(path.toString());
        return (new Docket(DocumentationType.SWAGGER_2)).apiInfo(this.apiInfo()).select().apis(RequestHandlerSelectors.basePackage(this.swaggerScanPackage)).paths(PathSelectors.any()).build();
    }

    private ApiInfo apiInfo() {
        log.info("##################################初始化API信息################################################");
        return (new ApiInfoBuilder()).title("APIs").description("…………").termsOfServiceUrl("https://js.dazhi.loan.com").version("1.0").build();
    }

    @Override
    public void setEnvironment(Environment environment) {

    }
}
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-02
  • 2021-08-19
  • 2021-07-13
  • 2022-02-23
  • 2021-08-22
  • 2021-06-21
猜你喜欢
  • 2022-03-07
  • 2022-12-23
  • 2021-07-20
  • 2021-10-08
  • 2022-01-03
  • 2021-08-12
相关资源
相似解决方案