17网站一起做网店杭州,企业网站优化怎么提高关键词排名,网站制作app,组装电脑报价网站源码首先抛出一个问题#xff1a;如果想要被Spring容器管理的Bean的路径不再Spring Boot 的包扫描路径下#xff0c;怎么办呢#xff1f;也就是如何去加载第三方的Bean 呢#xff1f; 有两种方式可以解决#xff1a; 这里我们使用Swagger的配置来做实验。 1#xff1a;首先一… 首先抛出一个问题如果想要被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);Autowiredprivate Environment env;Value(${swagger.scan.package})private String swaggerScanPackage;public SwaggerConfig() {}Beanpublic Docket createRestApi() {PredicateString 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();}Overridepublic void setEnvironment(Environment environment) {}
}2再看我的工程结构吧 发现我的SwaggerConfig 类和 SpringBoot 的启动类ConfigApplication.java 不在同一级目录下所以当Spring Boot 自动扫描包的时候是扫描不到我的SwaggerConfig 的配置的也就在控制台没有Swagger的打印的信息 所以这时候我如果想要把SwaggerConfig 加载到Spring容器中的话 要怎么办呢下面介绍两种方式 ①在Spring Boot Application 主类上 使用Import 注解
启动就可以看到Swagger的基础信息
②现在我们将其改造一下采用spring.factories 的方式去加载SwaggerConfig类在resources目录下新建一个META-INF 的目录然后在 新建一个spring.factories 的文件里面的内容为
登录后复制
org.springframework.boot.autoconfigure.EnableAutoConfiguration\
com.sg.config.SwaggerConfig然后在把Spring Boot 启动类上的Import注释掉启动发现也可以把SwaggerConfig加载到Spring 容器中
到这就完成了加载一个Spring 不能扫描到的一个类他可以是第三方的也可以是自己写的只要是Spring Boot 默认扫描路径不能够扫描到都可以使用这种方式去加载