Previously, I mentioned there were a couple of issues that I really wanted us to fix with our ACME registration service. In this section, we are going to use config injection to deal with two of them.
The first is the fact that many of our packages depend on the config and logging packages, and other than being a substantial single responsibility principle violation, this coupling is likely to cause circular dependency problems.
The second is our inability to test our calls to the exchange rate without actually calling the upstream service. So far, we have avoided adding any tests to this package for fear that our tests would then be affected (in terms of speed and stability) by that service.
First, let's examine where we are. Our dependency graph currently looks as shown in the following diagram:
As you can see, we have four packages (data...