diff --git a/dd-trace/src/main/java/com/datadoghq/trace/resolver/FactoryUtils.java b/dd-trace/src/main/java/com/datadoghq/trace/resolver/FactoryUtils.java
new file mode 100644
index 0000000000..88f1e31d4c
--- /dev/null
+++ b/dd-trace/src/main/java/com/datadoghq/trace/resolver/FactoryUtils.java
@@ -0,0 +1,34 @@
+package com.datadoghq.trace.resolver;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Enumeration;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
+
+public class FactoryUtils {
+ private final static Logger logger = LoggerFactory.getLogger(FactoryUtils.class);
+
+ private static final ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
+
+ public static A loadConfigFromResource(String resourceName, Class targetClass){
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ A config = null;
+ try {
+ Enumeration iter = classLoader.getResources(resourceName);
+ while (iter.hasMoreElements()) {
+ config = objectMapper.readValue(iter.nextElement().openStream(), targetClass);
+
+ break; // ONLY the closest resource file is taken into account
+ }
+ } catch (IOException e) {
+ logger.warn("Could not load configuration file {}.", resourceName);
+ logger.error("Error when loading config file", e);
+ }
+ return config;
+ }
+}