中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Boot 之spring.factories

發布時間:2020-07-25 10:39:05 來源:網絡 閱讀:1705 作者:龍愛海 欄目:編程語言
1.首先拋出一個問題:如果想要被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) {

    }
}

2:再看我的工程結構吧:
Spring Boot 之spring.factories
發現我的SwaggerConfig 類和 SpringBoot 的啟動類ConfigApplication.java 不在同一級目錄下,所以當Spring Boot 自動掃描包的時候,是掃描不到我的SwaggerConfig 的配置的,也就在控制臺沒有Swagger的打印的信息:

Spring Boot 之spring.factories

所以這時候我如果想要把SwaggerConfig 加載到Spring容器中的話 要怎么辦呢?下面介紹兩種方式
①:在Spring Boot Application 主類上 使用@Import 注解
Spring Boot 之spring.factories

啟動就可以看到Swagger的基礎信息:
Spring Boot 之spring.factories

②:現在我們將其改造一下,采用spring.factories 的方式去加載SwaggerConfig類,在resources目錄下新建一個META-INF 的目錄,然后在
新建一個spring.factories 的文件,里面的內容為:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.sg.config.SwaggerConfig

然后在把Spring Boot 啟動類上的@Import注釋掉,啟動發現也可以把SwaggerConfig加載到Spring 容器中
Spring Boot 之spring.factories

到這就完成了加載一個Spring 不能掃描到的一個類,他可以是第三方的,也可以是自己寫的,只要是Spring Boot 默認掃描路徑不能夠掃描到,都可以使用這種方式去加載!!!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阜平县| 镶黄旗| 道真| 象山县| 岱山县| 苍山县| 花垣县| 会昌县| 辽中县| 红原县| 泰安市| 晋州市| 尚义县| 奉节县| 晋中市| 大姚县| 营口市| 盐亭县| 门源| 淮滨县| 布尔津县| 鄂州市| 呈贡县| 隆尧县| 东港市| 靖宇县| 商城县| 五大连池市| 昭平县| 无棣县| 方正县| 淳安县| 新巴尔虎左旗| 五莲县| 齐齐哈尔市| 绥芬河市| 龙胜| 新龙县| 黎城县| 新晃| 蒙城县|