Como dijo bkail, se puede lograr esto de la siguiente manera. No estoy seguro de lo que su loader=some.properties.loader
en realidad quería decir, por lo omitió hacer nada con eso, sino que ya ha proporcionado opción para que en caso de que desea cargar utilizando el loader.getClass().getResourceAsStream ("filename.properties");
En primer lugar definir el tipo de inyección
@BindingType
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.FIELD, ElementType.METHOD,
ElementType.PARAMETER })
public @interface PropertiesResource {
@Nonbinding
public String name();
@Nonbinding
public String loader();
}
A continuación, crear una productor para que
public class PropertiesResourceLoader {
@Produces
@PropertiesResource(name = "", loader = "")
Properties loadProperties(InjectionPoint ip) {
System.out.println("-- called PropertiesResource loader");
PropertiesResource annotation = ip.getAnnotated().getAnnotation(
PropertiesResource.class);
String fileName = annotation.name();
String loader = annotation.loader();
Properties props = null;
// Load the properties from file
URL url = null;
url = Thread.currentThread().getContextClassLoader()
.getResource(fileName);
if (url != null) {
props = new Properties();
try {
props.load(url.openStream());
} catch (IOException e) {
e.printStackTrace();
}
}
return props;
}
}
a continuación, la inyección en el componente con nombre.
@Inject
@PropertiesResource(name = "filename.properties", loader = "")
private Properties props;
lo hice mirar en la documentación de soldadura, donde se le da la @HttpParam como ejemplo here. Esto es de acuerdo a la soldadura 1.1.0, 1.0.0 en la soldadura, la anotación conseguir se puede hacer como esto
PropertiesResource annotation = ip.getAnnotation(PropertiesResource.class);
No es fácil de JavaEE estándar Sospecho que CDI puede hacer algo como esto con @ Inject + @ Produces, pero no estoy lo suficientemente familiarizado con CDI. (Dejando este comentario con la esperanza de que alguien más pueda completar los detalles). –