I\'m just starting out and I dont think i understand it very well. From what I understand all controllers are created as dependencies the moment the router is created. They
If you have a controller that is instantiated by the router (ie. the default), then they are implicitly singletons, because the router exists only once. However if you inject the controller somewhere else, you'd still get a new instance unless it is marked as singleton.
Source: https://github.com/playframework/playframework/issues/4508#issuecomment-127820190