Say a web application is a central payment processing engine, where each user may have a different credit card provider that will be processing the credit card.
There is an interface that all of the implementations adhere to.
I want to know if there is a pattern where you could allow new implementations to be simply dropped in the deployment folder (the .jar file), without having to recompile the application. At most you would have to go into the administration section and enter some details about the new credit card implementation.
Example: Say the application currently supports Authorize.net. So all users are using authorize.net. Now I code a new implementation and drop the .jar file, go into the admin and register the new credit card provider.
Now users can login to the system, and choose to use the new implementation.
Is this possible to do w/o having to recompile? Would spring's DI come in handy for this?