Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. COIoC/DI is a very fancy way to say "we'll compose modules and configure programs externally." It's not a bad pattern *per se*, but it generally requires running inside some middleware engine or other 'container', so there's a fair degree of environment complexity and learning involved. And while it provides a dynamic way to compose and configure modules in a macro sense, it doesn't really address the need of each module to handle its own config and options data internally (or the config requirements of middleware itself).
      singulars
    2. COto be honest, i completely disagree. let's take spring as an example. of course, it requires learning. but it's nothing new or nothing bad in our job to learn new things. container? yes, it is necessary. complexity? i don't know. i think that code where you read the configuration manually is less readable. what can be more readable then annotation `@Value("exchange.rates.source.url")` on a field? it's good not only for macro configuration. every single class can have it's own properties easily injected. and what is more important it's very easy to test. try it. been there, seen it, liked it.
      singulars
    3. COThere's certainly a place for DI and middleware-orchestrated modules. In my world, it's not for every application or service. If you already have the middleware environment handy and are seeing testing and other benefits, excellent. YMMV.
      singulars
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload