首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

手动new的对象,是否可以通过@EJB注入属性解决方法

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

手动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容器中拿出的对象才可以。

热点排行