翼度科技»论坛 编程开发 JavaScript 查看内容

Spring Boot根据配置暴露接口的代码实现

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
SpringBoot 在
  1. org.springframework.boot.autoconfigure.condition
复制代码
包下提供了很多
  1. ConditionalOnXxx
复制代码
格式的条件注解,如
  1. ConditionalOnBean
复制代码
  1. ConditionalOnMissingBean
复制代码
  1. ConditionalOnClass
复制代码
  1. ConditionalOnMissingClass
复制代码
等。这些类名起的非常好,很直观的可以理解其功能,具体使用哪些可以根据业务需要来选择。
本示例要实现的效果:在非生产环境下暴露测试用的接口。
使用到的注解:
  1. @ConditionalOnExpression
复制代码
  1. ConditionalOnBean
复制代码

首先定义一个
  1. TestEnvironment
复制代码
的类:
  1. import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
  2. import org.springframework.stereotype.Component;

  3. @Component
  4. @ConditionalOnExpression("'${my-app.env}' != 'PROD'")
  5. public class TestEnvironment {
  6. }
复制代码
上面
  1. @ConditionalOnExpression
复制代码
注解参数中的
  1. ${my-app.env}
复制代码
为 SpEL 表达式,其值从配置文件读取。
  1. '${my-app.env}' != 'PROD'
复制代码
表示如果
  1. my-app.env
复制代码
配置项的值不为
  1. PROD
复制代码
,则该类生效。
因为多个地方可能会用到这个判断表达式,所以将其定义为单独的类,以方便使用和维护。
之后在测试用的
  1. Controller
复制代码
  1. Service
复制代码
上加上
  1. @ConditionalOnBean(TestEnvironment.class)
复制代码
注解即可。
  1. import lombok.RequiredArgsConstructor;
  2. import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
  3. import org.springframework.validation.annotation.Validated;
  4. import org.springframework.web.bind.annotation.PostMapping;
  5. import org.springframework.web.bind.annotation.RequestBody;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.RestController;

  8. /**
  9. * 测试
  10. *
  11. * @author JiaJia
  12. */
  13. @Validated
  14. @RequiredArgsConstructor
  15. @RestController
  16. @ConditionalOnBean(TestEnvironment.class)
  17. @RequestMapping("test")
  18. public class TestController extends BaseController {

  19.     private final TestService testService;

  20.     /**
  21.      * 支付测试接口
  22.      */
  23.     @PostMapping("/pay")
  24.     public R<Void> pay(@Validated @RequestBody PayParam param) {
  25.         return testService.pay(param);
  26.     }
  27. }
复制代码
对应的测试用
  1. Service
复制代码
也是相同的写法:
  1. @Service
  2. @RequiredArgsConstructor
  3. @ConditionalOnBean(TestEnvironment.class)
  4. public class TestServiceImpl implements TestService {
  5.     // ...
  6. }
复制代码
到此这篇关于Spring Boot根据配置暴露接口的代码实现的文章就介绍到这了,更多相关Spring Boot暴露接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/javascript/33116749e.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具