Jeecg Boot Swagger分组设置及无效情况(SpringBoot自动配置原理)

396 阅读2分钟

@[toc]

==本文使用的是JeecgBoot v2.2.0==

正确的例子

Swagger2Config.java中配置

	/**
	 * swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
	 *
	 * @return Docket
	 */
	@Bean
	public Docket createRestApi() {
		return new Docket(DocumentationType.SWAGGER_2)
				.apiInfo(apiInfo()).groupName("system模块")
				.select()
				//此包路径下的类,才生成接口文档
				.apis(RequestHandlerSelectors.basePackage("org.jeecg.modules"))
				//加了ApiOperation注解的类,才生成接口文档
	            .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
				.paths(PathSelectors.any())
				.build()
				.securitySchemes(Collections.singletonList(securityScheme()));
				//.globalOperationParameters(setHeaderToken());
	}

	/**
	 * swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
	 *
	 * @return Docket
	 */
	@Bean
	public Docket orchardApi() {
		return new Docket(DocumentationType.SWAGGER_2)
				.apiInfo(apiInfo()).groupName("xxx模块")
				.select()
				//此包路径下的类,才生成接口文档
				.apis(RequestHandlerSelectors.basePackage("org.jeecg.xxx"))
				//加了ApiOperation注解的类,才生成接口文档
				.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
				.paths(PathSelectors.any())
				.build()
				.securitySchemes(Collections.singletonList(securityScheme()));
		//.globalOperationParameters(setHeaderToken());
	}

这样配置是OK的

无效的情况

我一开始是这么配置的 想法是把公司业务单独写在com.aonuo包内,并单独生成Swagger的一个分组文档

	/**
	 * swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
	 *
	 * @return Docket
	 */
	@Bean
	public Docket createRestApi() {
		return new Docket(DocumentationType.SWAGGER_2)
				.apiInfo(apiInfo()).groupName("system模块")
				.select()
				//此包路径下的类,才生成接口文档
				.apis(RequestHandlerSelectors.basePackage("org.jeecg.modules"))
				//加了ApiOperation注解的类,才生成接口文档
	            .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
				.paths(PathSelectors.any())
				.build()
				.securitySchemes(Collections.singletonList(securityScheme()));
				//.globalOperationParameters(setHeaderToken());
	}

	/**
	 * swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
	 *
	 * @return Docket
	 */
	@Bean
	public Docket orchardApi() {
		return new Docket(DocumentationType.SWAGGER_2)
				.apiInfo(apiInfo()).groupName("aonuo模块")
				.select()
				//此包路径下的类,才生成接口文档
				.apis(RequestHandlerSelectors.basePackage("com.aonuo"))
				//加了ApiOperation注解的类,才生成接口文档
				.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
				.paths(PathSelectors.any())
				.build()
				.securitySchemes(Collections.singletonList(securityScheme()));
		//.globalOperationParameters(setHeaderToken());
	}

这种情况并不会扫描到com.aonuo下的接口。

经过了百般尝试,最后突然想起来SpringBoot的自动配置原理SpringBoot自动配置扫描包,扫描的路径是主配置类所在包下的

而JeecgBoot这个项目,主配置类所在包是org.jeecg,所以只有org.jeecg下的文件才会被扫描到Spring容器

我配的com.aonuoorg.jeecg是同层级,当然就不会被扫描到。

知识还是要融会贯通啊!


==😁欢迎加入QQ群交流: [游戏-Web-开发技术栈 ☄️] '300567032'== ==点击下方图标一键加入!== 游戏-Web-开发技术栈 ☄