如何从refection创建一个对象但使用依赖注入?

时间:2014-05-27 07:43:52

标签: java reflection dependency-injection inject

我有一组支持javax.inject的类。但现在我需要使用反射来调用这些类。

o = clazz.newInstance();
...
method.invoke(o, parm1, param2 );

但是我不想调用newInstance(),而是想知道是否有可能将其作为注入对象?我该怎么办?

1 个答案:

答案 0 :(得分:0)

这不是一个适用于任何地方的完整答案。但是如果您有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;
        }
    }