kezhenxu94 commented on code in PR #9828:
URL: https://github.com/apache/skywalking/pull/9828#discussion_r1001758726


##########
oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/ModuleProvider.java:
##########
@@ -52,9 +52,28 @@ protected final ModuleManager getManager() {
     public abstract Class<? extends ModuleDefine> module();
 
     /**
-     *
+     * Create a config creator to initialize this configuration of this module 
provider
+     * @return creator instance to initialize the configuration with callback. 
Or return null if no config is required.
      */
-    public abstract ModuleConfig createConfigBeanIfAbsent();
+    public abstract ConfigCreator newConfigCreator();
+
+    /**
+     * Configuration creator to provide Module Config to initialize
+     * @param <T> class type of the config
+     */
+    public interface ConfigCreator<T extends ModuleConfig> {
+        /**
+         * Declare the type of the config class
+         * @return class type
+         */
+        Class<T> type();
+
+        /**
+         * Callback when the ModuleManager kernel has initialized this 
configuration.
+         * @param initialized instance of the given {@link #type()}
+         */
+        void onInitialized(T initialized);

Review Comment:
   > Module config is just a small thing for a provider
   
   IMHO module config is critical for a provider.
   
   > and it actually should not be heavily used by a provider.
   
   Comparing to `ModuleProvider.prepare`, `ModuleProvider.start`, 
`ModuleProvider.notifyAfterCompleted`, the module config is much more heavily 
used in the provider, why do you say "it actually should not be heavily used by 
a provider."? We nearly use the config everywhere in the provider.
   
   > Do you think which scenarios this method/stage would be helpful?
   
   I doubt that they need to be "helpful", all these are lifecycle methods and 
they should be invoked by the module manager only once.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to