Hey all,

I am trying to inject configuration pojo with guice by annotation. But I 
find difficulty to do that. Basically what I want to achieve is like 
following:

Say I have the following classes 

@Retention(RUNTIME)
@Target({ FIELD, PARAMETER })
@BindingAnnotation
public @interface Config {
    /**
     * The config key to bind
     */
    String key();
}


/**
 * A tag interface to indicate that a class is a Configuration.

 */
public interface Configuration {

}


/**
 * An example: App Configuration
 */

public class AppConfiguration implements Configuration {
    private String appId;
    private String appOwner;
    private String appDesc;
}



/**
 * Another config example: MySql Connection setting
 */

public static class MysqlConnection implements Configuration {
    private String host;
    private int port;
    private int timeout;
}


You could define any other configuration POJOs.


Also, assuming I have a config provider that could load the config file and map 
to the pojo:


public interface ConfigurationProvider {

    /**
     * Get the configuration pojo at the node path
     */
    <T extends Configuration> T getConfiguration(
            Class<T> configKlass,
            String nodePath) throws ConfigurationProviderException;
}


Now, I would like Guice to inject these configuration somehow like:


public class MyService {
    @Inject
    public MyService(
            @Config("app_config")Configuration.AppConfiguration appConfig,
            @Config("mysql_conn")Configuration.MysqlConnection mysqlConnection) 
{

    }
}


Just curious if this is possible with Guice injection? If yes, how can I 
achieve that?


Thank you!

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-guice+unsubscr...@googlegroups.com.
To post to this group, send email to google-guice@googlegroups.com.
Visit this group at https://groups.google.com/group/google-guice.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-guice/0e1032a8-9dd5-4cee-ad95-ef7f422d6d1c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to