# 文件配置 在阅读文件配置之前,请保证你已经阅读过文档的`通用API`中的`配置->文件配置`章节 <br> ## 文件内容 HTTP API组件在上文提到的配置中,除了核心中自带的通用配置以外,还提供了以下的配置: ```properties ################################ ## ### HTTP API 组件所提供的额外配置,一般来讲不同的组件框架之间会存在差异。 ## ################################ # 酷Q端插件所监听的端口 -> 插件 动态交互 处所配置的端口, 框架内默认8877 simple.robot.conf.httpapi.serverPort=8877 # 酷Q端插件向Java端请求时候使用的请求路径, 框架默认为/coolq simple.robot.conf.httpapi.serverPath=/coolq # java端监听酷Q端的请求的服务端口, 默认为15514 simple.robot.conf.httpapi.javaPort=15514 # TCP连接最大并发数, 传 0 或负数表示使用默认值,默认为0,一般没有什么高级需求可以无视. simple.robot.conf.httpapi.backlog=0 # 能够接收的请求方式,数组形式,多个使用逗号分隔。默认为POST请求,一般情况下不做更改。 simple.robot.conf.httpapi.method=POST ``` ## 如何使用 上文的代码配置提到过,需要创建一个类实现`HttpApp`接口来进行配置。而当你想要使用配置文件进行配置的时候,则不再使用`HttpApp` 接口而是使用 `ResourceHttpApp` 接口,然后改变你的方法实现: ```java public class DemoRun implements ResourceHttpApp { public static void main(String[] args) { HttpApplication httpApplication = new HttpApplication(); httpApplication.run(new DemoRun()); } /** * resources路径下的配置文件路径。 */ @Override public String resourceName() { return "/conf.properties"; } /** * 在配置结束后 * @param args properties对象实例 * @param configuration 配置完成的配置类 */ @Override public void before(Properties args, HttpConfiguration configuration) { System.out.println("配置完成了!"); } /** * after方法没变化,启动成功后的回调方法 * @param cqCodeUtil cqCodeUtil对象 * @param sender sender对象 */ @Override public void after(CQCodeUtil cqCodeUtil, MsgSender sender) { } } ``` 从以上代码可以看到,你只需要提供文件在`resources`下的路径即可完成配置。 但是假如我的配置文件不在resources下, 需要我手动配置`InputStream`对象的获取方式呢? 你可以通过重写`getStream()` 方法来实现: ```java public class DemoRun implements ResourceHttpApp { public static void main(String[] args) { HttpApplication httpApplication = new HttpApplication(); httpApplication.run(new DemoRun()); } /** * resources路径下的配置文件路径。 * 由于重写了getStream() 方法,此方法失去作用,无视即可。 */ @Override public String resourceName() { return "/conf.properties"; } /** * 自定义配置文件输入流获取。 * 当重写了此方法,resourceName()方法将失去作用。 * 在普通情况下请不要重写此方法。 * @return */ @Override public InputStream getStream(){ // 返回一个inputStream // 这个null只是作为示例用,不能真的返回null return null; } /** * 在配置结束后 * @param args properties对象实例 * @param configuration 配置完成的配置类 */ @Override public void before(Properties args, HttpConfiguration configuration) { System.out.println("配置完成了!"); } /** * after方法没变化,启动成功后的回调方法 * @param cqCodeUtil cqCodeUtil对象 * @param sender sender对象 */ @Override public void after(CQCodeUtil cqCodeUtil, MsgSender sender) { } ``` 从上述代码可以看到,重写的方法中我多重写了一个`getStream()` 方法,并通过此方法返回一个自定义的`InputStream`对象。此时,`resourceName()` 方法可以被无视。 ## 注意事项 1、重写的方法是不同的。 代码配置的时候,你重写的是`before(config)`和`after(cqcodeutil, sender)` 文件配置的时候,你重写的是`before(properties, config)`、`resourceName()` 和 `after()` 或者`before(properties, config)`、`resourceName() (无作用)` 、`getStream()` 和 `after()` **请千万注意!不要重写了多余的、错误的方法!**