美文网首页
关于用反射构造的类内部调用其他服务的问题

关于用反射构造的类内部调用其他服务的问题

作者: 玖柒叁 | 来源:发表于2019-08-12 11:08 被阅读0次

反射的简单使用

class Student{
    private Score score;
    @Resource
    private HandlerService handler;
    private Student(Score score) {
        this.score = score;
    }
}
Score score = new Score;
Class class = Student.class;
Constructor constructor = class.getConstructor(Score.class);
Student s = constructor.newInstance(score);

内部调用其他服务问题

问题说明

   开发中我们通常会使用Spring框架的注解来直接获取类的实例,因此在使用反射的时候就会习惯性还是用注解,如上面代码所示,这会导致handler为null。因为利用反射构造类的时候没有通过spring,那么该实例中的注解也不会生效。

问题解决

这种情况下,方法之一是将内部服务在构造函数中初始化以便获取实例。

class Student{
    private Score score;
    @Resource
    private HandlerService handler;
    private Student(Score score, ApplicationContext applicationContext) {
        this.score = score;
        this.handler = applicationContext.getBean(HandlerService.class);
    }
}
Class Main implements ApplicationContextAware {
     private ApplicationContext applicationContext;
     Score score = new Score;
public void test() {
     Class class = Student.class;
     Constructor constructor = class.getConstructor(Score.class, ApplicationContext.class);
     Student s = constructor.newInstance(score,applicationContext);
}
@Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }
}

相关文章

  • 关于用反射构造的类内部调用其他服务的问题

    反射的简单使用 内部调用其他服务问题 问题说明 问题解决 这种情况下,方法之一是将内部服务在构造函数中初始化以便获...

  • Java反射(二)

    类 反射调用一:调用无参构造函数 反射调用二:调用含参构造函数

  • 一个类的构造器不能调用这个类中的其他构造器。

    一个类的构造器不能调用这个类中的其他构造器。( 错误)this()和super()都是构造器,this()调用本类...

  • Spring详解(三)Spring的IOC容器

    IOC容器实例化对象的几种方式: 调用无参构造 调用有参构造 调用其他对象构造 调用工厂类静态方法 调用工厂类非静...

  • 反射

    反射的作用① 动态的加载类、动态的获取类的信息(属性,方法,构造方法) ② 动态构造对象 ③ 动态调用类和对象的任...

  • 内部类

    写在其他类内部的类就是内部类 成员内部类成员内部类就是定义在其他类里面的class,具备单独的构造函数。成员内部类...

  • Scala-8.面向对象-构造函数

    Scala类的主构造函数是以下组合: 构造函数参数 在类内部被调用的方法 在类内部执行的语句和表达式和Java类似...

  • java反射和动态代理

    java反射 反射是程序运行时,通过反射直接操作对象或者类。获取类声明的属性和方法,调用方法或者构造对象,设置修改...

  • Kotlin反射(4)调用构造函数

      通过反射调用构造函数与调用普通函数类似。通过反射调用构造函数也是使用 KFunction 实例,KFuncti...

  • Java反射初始化类调用类中的方法

    1.通过无参构造方法实例化对象 无参构造方法,类 反射调用方式 2. 有参构造函数,对象实例化 有参构造函数类 反...

网友评论

      本文标题:关于用反射构造的类内部调用其他服务的问题

      本文链接:https://www.haomeiwen.com/subject/hyyyjctx.html