首页 > 解决方案 > 我如何在 Spring Boot 中获取类的实例?

问题描述

它是一个实例连接到外部服务并不断监听它的类。

@Component
public class Service extends PollingBot  {


    @Value("${token}")
    private String token;

    @Override
    public void onUpdateReceived(Update update) {
        if (update.hasMessage()) {

        }
    }

    public void sendMessageToUser(String message) {
        try {
            execute(sendMessage);
        } catch (ApiException e) {
        }

    }

}

您可以看到有一个名为 sendMessageToUser 的方法可以发送消息。它不能是静态的,因为执行方法不允许静态上下文。此方法无法与其他类分离。/

所以,我必须从其他类调用这个方法。但是我不想创建额外的服务类实例,否则我有两个实例来监听更新,但我希望它是唯一的类实例。

我试图运行应用程序上下文并从中运行方法,但没有成功。

所以,我的问题很简单。我怎么能从其他类运行这个类的非静态(!)方法?

标签: javaspringspring-boot

解决方案


您可以使用 @Autowired 注解在 Spring 中调用 bean 类(组件)的方法。此外,正如提到的,默认情况下,bean 在 spring 中是单例的,因此您不必担心每次都显式创建单个实例。尝试在调用类中使用以下代码:

@Autowired
private Service service;

public void sendText() {
        service.sendMessage(message);
}

推荐阅读