为什么从另一个类调用使用自动装配对象的方法时,该对象为null?

旅行者:

我正在做一个Spring Boot 2.1.6项目。

ScheduledTasks当我有一个自动装配的对象时,我有了一个类,该对象db可以让我访问jdbcTemplate以便执行查询。当我start从另一个文件main 调用from时,该db对象为null。如果我start直接方法放在主类中,db方法不为null。

我不确定是什么问题。我将@Component注释放入其中,ScheduledTasks以使Spring知道我的自动装配对象。我想念什么?

这是我的ScheduledTasks

@Component
public class ScheduledTasks {
    private Logger log = VastLogger.getLogger(TrackingEventController.class);

    @Autowired
    private DBHandler db;

    public void start() {
        if (db == null) {
            log.info("db is null from parent");
        }
    }
}

这是我的主要课程:

@SpringBootApplication
@EnableJms
public class ServerMain implements CommandLineRunner {
    private static final Logger log = LogManager.getLogger(ServerMain.class);

    @Autowired
    private DBHandler db;

    public static void main(String[] args) {
        log.warn("from main");
        ConfigurableApplicationContext context = SpringApplication.run(ServerMain.class, args);

    }

    @Override
    public void run(String... strings) throws Exception {
        log.info("starting run");
        db.initDBTables();
        ScheduledTasks tasks = new ScheduledTasks();
        tasks.start();
    }
阿米特·贝拉(Amit Bera):

您正在ScheduledTasks使用创建new在这种情况下,您将不会使用spring创建的对象,因此自动装配将不起作用。您还应该ScheduledTasks在主类中连接对象。

@SpringBootApplication
@EnableJms
public class ServerMain implements CommandLineRunner {
    private static final Logger log = LogManager.getLogger(ServerMain.class);

    @Autowired
    private DBHandler db;

    @Autowired
    private ScheduledTasks tasks;

    public static void main(String[] args) {
        log.warn("from main");
        ConfigurableApplicationContext context = SpringApplication.run(ServerMain.class, args);

    }

    @Override
    public void run(String... strings) throws Exception {
        log.info("starting run");
        db.initDBTables();
        tasks.start();
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么将静态对象作为参数传递给另一个类的构造函数时为null

为什么对自动装配字段进行的更改会影响另一个类中的另一个自动装配字段?

从对象数组另一个类调用方法?

从另一个对象类方法调用一个对象及其方法

Java:为什么用Java中的当前调用对象自动调用在另一个方法内部调用的方法?

angular 2 - 在 div 单击时,将对象传递给另一个组件,另一个组件使用该对象调用休息服务

设置为等于另一个对象时是否为自动释放对象

在什么情况下可以在一个类的方法在另一个对象上调用?

复制一个对象,该对象包含另一个对象的超类

Java:在初始化块中初始化对象时从另一个类调用对象的方法

为什么我的主对象调用另一个对象的所有方法,而实际上只调用了一个方法?

在同一个类的另一个方法中调用一个类的方法的对象

统一访问另一个类变量时,为什么需要附加或引用对象?

为什么不能通过从另一个类调用该方法来使用JavaFX文本字段生成地图?

为什么数组中的对象的析构函数被另一个替换时没有被调用?

如何从另一个类调用菜单对象?

从另一个类调用对象

当对象引用为常数时,为什么允许更改指向另一个类的指针的成员变量?

从另一个类中获取值时尝试对空对象引用调用虚拟方法

如果从另一个类中调用它,为什么我的ArrayList为空?

TypeError:“ float”对象不可迭代;从另一个文件调用类时发生

当传递给另一个对象时,为什么在const对象上调用std :: move会调用复制构造函数?

在另一个类中分配对象数组(C ++)

Mockito-在目标类方法中验证另一个对象的方法调用

使用另一个对象的方法实例化一个抽象类?

调用与另一个方法同名的对象的方法

为什么 useState 钩子改变另一个对象而不调用它?

当子对象为null时,访问另一个对象中包含的对象中的变量

从另一个对象/类型调用成员方法,就好像它们属于该对象/类型