Romper
Romper

Reputation: 2257

Changing dependency in running spring application

How to change dependency in already deployed application. So when application starts it send notification through email, but at some moment we should be able to change to send notification through sms.

How to do that in Spring Boot?

Upvotes: 0

Views: 63

Answers (2)

StanislavL
StanislavL

Reputation: 57421

You can define a property in a Singleton bean? let's call it notificationMethod and assign by default EMAIL. (the property could be enum or string or int no matter). You need a controller method to change the property.

@Autowired
private MyNotificationMethodHolderService service;
@RequestMapping(value = "/changeNotificationMethod")
@ResponseBody
public String change(@RequestParam("methodName") String methodName) {
    service.setNotificationMethod (methodName);
}

Your notification service checks the property and sends notification according to the value (Strategy pattern according to comments).

If you need to change method you invoke

<HOST>:<PORT>/context/changeNotificationMethod?methodName=SMS

Upvotes: 0

Amer Qarabsa
Amer Qarabsa

Reputation: 6574

thats a work for a strategy pattern, it does not have anything to do with spring itself

You should have 2 strategies one for email and one for sms, in each strategy you will autowired the needed bean.

check this link for strategy implementation

https://www.tutorialspoint.com/design_pattern/strategy_pattern.htm

Upvotes: 2

Related Questions