java 启用/禁用_java-可以使用属性启用/禁用spring boot @RestController吗?

在这里添加这个问题和另一个问题。

这是我的答案:

我实际上会使用@RefreshScope Bean,然后当您想在运行时停止Rest Controller时,只需要将所述控制器的属性更改为false。

SO的链接引用运行时更改的属性。

这是我的工作代码段:

@RefreshScope

@RestController

class MessageRestController(

@Value("\${message.get.enabled}") val getEnabled: Boolean,

@Value("\${message:Hello default}") val message: String

) {

@GetMapping("/message")

fun get(): String {

if (!getEnabled) {

throw NoHandlerFoundException("GET", "/message", null)

}

return message

}

}

还有使用过滤器的其他替代方法:

@Component

class EndpointsAvailabilityFilter @Autowired constructor(

private val env: Environment

): OncePerRequestFilter() {

override fun doFilterInternal(

request: HttpServletRequest,

response: HttpServletResponse,

filterChain: FilterChain

) {

val requestURI = request.requestURI

val requestMethod = request.method

val property = "${requestURI.substring(1).replace("/", ".")}." +

"${requestMethod.toLowerCase()}.enabled"

val enabled = env.getProperty(property, "true")

if (!enabled.toBoolean()) {

throw NoHandlerFoundException(requestMethod, requestURI, ServletServerHttpRequest(request).headers)

}

filterChain.doFilter(request, response)

}

}

我的Github解释了如何在运行时禁用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值