读书人

手动new的对象是否可以通过@EJB注入

发布时间: 2012-09-16 17:33:17 作者: rapoo

手动new的对象,是否可以通过@EJB注入属性
各位达人,请问手动创建的对象,是否可以通过@EJB注解来注入对象。。

例如
class Demo{
@EJB
private MyClass myCl;
private String param

Demo(String param){
this.param = param
}
}

如果在代码使用new来创建,而不是由EJB框架来创建,那么能否自动注入MyClass对象。

Demo demo = new Demo("p");

//myCl.toString();

谢谢!

[解决办法]

Java code
package sh.pl;import java.lang.annotation.Annotation;import java.lang.reflect.Field;import javax.ejb.EJB;public class TestEJBContainer {    public static void injectEJB(Object obj) throws IllegalArgumentException, IllegalAccessException, InstantiationException {        if (obj == null) return;        Field fields[] = obj.getClass().getDeclaredFields();        for (Field f : fields) {            Annotation a = f.getAnnotation(EJB.class);            if (a != null) {                //注入                f.setAccessible(true);                f.set(obj, f.getType().newInstance());                f.setAccessible(false);            }        }            }        public static void main(String[] args) {        Demo demo = new Demo("p");        try {            injectEJB(demo);            System.out.println(demo.getMyCl().toString());        } catch (Exception e) {            e.printStackTrace();        }             }}
[解决办法]
不可以。
从spring容器中拿出的对象才可以。

读书人网 >J2EE开发

热点推荐