【发布时间】:2014-07-16 00:42:39
【问题描述】:
我有一组支持javax.inject 的类。但现在我需要使用反射来调用这些类。
o = clazz.newInstance();
...
method.invoke(o, parm1, param2 );
但不是调用newInstance(),我想知道是否有可能将其作为注入对象获取?我该怎么做?
【问题讨论】:
标签: java reflection dependency-injection inject
我有一组支持javax.inject 的类。但现在我需要使用反射来调用这些类。
o = clazz.newInstance();
...
method.invoke(o, parm1, param2 );
但不是调用newInstance(),我想知道是否有可能将其作为注入对象获取?我该怎么做?
【问题讨论】:
标签: java reflection dependency-injection inject
这不是一个适用于任何地方的完整答案。但是如果你有一个 JNDI 上下文,你可以使用以下来获取注入的对象。 (但这里你需要知道 jndi 名称:例如:java:module/PasswordDataRepository)
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public static <T> T getValue(String jndiName, Class<T> type)
{
try {
Context ctx = new InitialContext();
return (T)ctx.lookup(jndiName);
} catch (NamingException e) {
e.printStackTrace();
return null;
}
}
【讨论】: