It is possible to provide extra logic to be executed at Registry startup, by making contributions to the RegistryStartup service configuration.
The values contributed are Runnable objects. The configuration is ordered, so it is possible to control in what order the objects are executed.
RegistryStartup occurs after eager loaded services are instantiated.
Here's an example of a module that makes a contribution:
Generally, these contributions are in the form of inner classes; if they were services, they could just be eagerly loaded.
Instead of making contributions to the RegistryStartup service configuration you can provide startup methods inside your modules. A startup method is a static or instance method of a module annotated with @Startup annotation. Each module is allowed to contain several startup methods.