Java 如何在Spring Boot中获取类的实例?

Java 如何在Spring Boot中获取类的实例?,java,spring,spring-boot,Java,Spring,Spring Boot,它是一个实例连接到外部服务并不断监听它的类 @Component public class Service extends PollingBot { @Value("${token}") private String token; @Override public void onUpdateReceived(Update update) { if (update.hasMessage()) { }

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

@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的方法用于发送消息。它不能是静态的,因为执行方法不允许静态上下文。此方法无法分离到其他类/

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

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


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

默认情况下,所有spring管理的bean都是单例的。您需要使用@Autowired将bean注入到其他bean中,然后您可以调用该bean的方法

@Autowired
private Service service;

    public void sendMessage(String message){
    service.sendMessageToUser(message);
}

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

@Autowired
private Service service;

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

请阅读singleton的意思。@LeTex有趣的想法。。。我想从应用程序上下文中获取Bean,但看起来单例可能是一种更好的方法。让我检查它在我的情况下是否有效。默认情况下,所有spring管理的Bean都是单例的。@Gundamaiah,我如何从其他类调用spring类Bean?@vhf您需要使用自动连线注释将spring Bean注入到另一个类中。然后你可以调用这个bean的方法。谢谢你的建议。但是,我添加了NullPointerException代码。我会再检查一下,可能是出了什么问题。谢谢你的建议。但是,我添加了NullPointerException代码。我会再检查一下,可能是出了什么问题。谢谢你的支持。现在可以了。我将Dhruv的答案标记为已标记,因为他很早就发布了相同的答案。然而,祝你在所有项目中好运@很好。你怎么能告诉Dhruv比我更早发布。如果您打开任何问题,旧答案将显示在下面。我的答案是这个问题的第一个答案。啊哈。我不知道,对不起。我已经选择了你的答案。非常感谢。