7

Problem

Exploring an option of enabling/disabling a @RequestMapping endpoint on demand without restarting JVM. Implement a kill switch on a endpoint at runtime.

Attempt

I've tried the following but @RefreshScope does not seem to work with @ConditionOnProperty

@RestController @RefreshScope @ConditionalOnProperty(name = "stackoverflow.endpoints", havingValue = "enabled") public class MyController { @Value("${stackoverflow.endpoints}") String value; @RequestMapping(path = "/sample", method = RequestMethod.GET) public ResponseEntity<String> process() { return ResponseEntity.ok(value); } } 

Updated property using

POST /env?stackoverflow.endpoints=anyvalue 

And reloaded context using

POST /refresh 

At this point the controller returns the updated value.

Question

Are there any other ways to achieve the desired functionality?

1

2 Answers 2

1

Conditions in Boot are only applied at the Configuration class level or at the bean definition level.

This might help you.

public class MyWebConfiguration extends WebMvcConfigurationSupport { @Bean @ConditionalOnProperty(prefix="stackoverflow.endpoints",name = "enabled") public MyController myController() { return new MyController (); } } 
Sign up to request clarification or add additional context in comments.

Comments

1

As Spenser Gibb said here, this behavior is not supported.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.