idtitlesidebar_label
spring_config
Spring 项目配置
Spring 项目配置

若您的项目依赖的是Spring,而非Spring Boot,或者使用xml方式进行Spring Bean的配置,那么您可以通过Spring xml的方式定义配置。

依赖

在进行Spring方式配置前,需要先确保您的项目在Maven中除了forest-core和spring外,还依赖forest-spring包

  1. <dependency>
  2. <groupId>com.dtflys.forest</groupId>
  3. <artifactId>forest-spring</artifactId>
  4. <version>1.5.0-RC7</version>
  5. </dependency>

配置 XML SCEHEMA

打开spring的上下文配置文件,在beans开头定义的属性中加入Forest的Schema

  1. xmlns:forest="http://forest.dtflyx.com/schema/forest"
  2. ...
  3. xsi:schemaLocation=" ...
  4. http://forest.dtflyx.com/schema/forest
  5. http://forest.dtflyx.com/schema/forest/forest-spring.xsd
  6. ..."

加入完成后类似如下效果

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:forest="http://forest.dtflyx.com/schema/forest"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://forest.dtflyx.com/schema/forest
  8. http://forest.dtflyx.com/schema/forest/forest-spring.xsd">
  9. ...
  10. </beans>

添加Forest基本配置的定义

  1. <!-- Forest 全局配置 -->
  2. <!-- id 在spring上下文中bean的id, 默认值为forestConfiguration -->
  3. <!-- backend 后端HTTP API: okhttp3 -->
  4. <!-- timeout 请求超时时间,单位为毫秒, 默认值为3000 -->
  5. <!-- connectTimeout 连接超时时间,单位为毫秒, 默认值为2000 -->
  6. <!-- retryCount 请求失败后重试次数,默认为0次不重试 -->
  7. <!-- retryer 重试器类 -->
  8. <!-- sslProtocol 单向验证的HTTPS的默认SSL协议,默认为SSLv3 -->
  9. <!-- logEnabled 打开或关闭日志总开关,默认为true -->
  10. <!-- logRequest 打开/关闭Forest请求日志(默认为 true) -->
  11. <!-- logResponseStatus 打开/关闭Forest响应状态日志(默认为 true) -->
  12. <!-- logResponseContent 打开/关闭Forest响应内容日志(默认为 false) -->
  13. <forest:configuration
  14. id="config0"
  15. backend="httpclient"
  16. timeout="30000"
  17. connectTimeout="10000"
  18. retryCount="3"
  19. retryer="com.dtflys.forest.retryer.NoneRetryer"
  20. charset="UTF-8"
  21. sslProtocol="SSLv3"
  22. maxConnections="500"
  23. maxRouteConnections="500"
  24. logEnabled="true"
  25. logRequest="false"
  26. logResponseStatus="false"
  27. logResponseContent="true">
  28. <!-- forest变量定义 开始 -->
  29. <forest:var name="baseUrl" value="http://www.xxx.com"/>
  30. <forest:var name="x" value="0"/>
  31. <forest:var name="y" value="1"/>
  32. <!-- forest变量定义 结束 -->
  33. <!-- SSL KeyStore定义 开始 -->
  34. <forest:ssl-keystore id="keystore1" file="test.keystore" keystorePass="123456" certPass="123456"/>
  35. <forest:ssl-keystore id="keystore2" file="test2.keystore" keystorePass="foo" certPass="bar"/>
  36. <!-- SSL KeyStore定义 结束 -->
  37. <!-- Forest转换器定义 开始 -->
  38. <!-- 设置JSON转换器 -->
  39. <forest:converter dataType="json" class="com.dtflys.forest.converter.json.ForestGsonConverter">
  40. <forest:parameter name="dateFormat" value="yyyy/MM/dd hh:mm:ss"/>
  41. </forest:converter>
  42. <!-- 设置XML转换器 -->
  43. <forest:converter dataType="xml" class="com.dtflys.forest.converter.xml.ForestJaxbConverter">
  44. </forest:converter>
  45. <!-- Forest转换器定义 结束 -->
  46. </forest:configuration>
  1. 使用forest:configuration标签创建在Spring中的ForestConfiguration Bean

  2. 使用forest:var标签定义变量

    注意:变量的作用域为该ForestConfiguration之下,所有跟这个配置对象绑定的Client都能访问到其下的变量,而别的ForestConfiguration下定义的变量不能访问。

创建Client Bean

创建Client Bean有两种方式

  1. 通过forest:client标签创建单个Client Bean
  1. <forest:client id="siteAClient" configuration="config0" class="com.xxx.client.SiteAClient"/>
  1. 通过forest:scan标签制定back-package的方式批量创建Client Bean
  1. <forest:scan configuration="config0" base-package="com.xxx.client"/>