Spring Boot应用程序,如何将Java对象传递给应用程序?

时间:2018-05-28 04:30:25

标签: java spring spring-boot

我有一个启动Spring Boot应用程序的GUI:

    SpringApplication application = new SpringApplication(ServerSpringApplication.class);
    ConfigurableApplicationContext ctx = application.run(args);

我正在尝试将对象的GUI引用传递给Spring Boot应用程序,以便SpringApplication可以从GUI对象中读取值。

我知道argsString[],所以我认为我不能通过run方法传递对象。

或者,SpringApplication有没有办法找到对实例化它的对象的引用?

感谢您的帮助和指导。

1 个答案:

答案 0 :(得分:0)

我认为你喜欢这样做,因为" GUI对象"将要改变,Spring Boot应用程序应该继承这些值吗?

正如其他人所说,这是一种反模式,使用Spring来托管GUI或者在架构上使用其他一些通信方法会更清晰。你可以通过这种方式获得一些奇怪的记忆交互。

所以,请谨慎行事。

如果你确实想要主应用程序和SB之间的交互,那么Spring Boot应用程序在与启动它的应用程序相同的JVM中运行(请注意这一点,因为这意味着它共享相同的堆空间,因此请确保你有足够的分配)。这意味着您可以使用单例实例来存储GUI应用程序,Spring Boot应用程序可以访问该单例。

即,

public class MyGuiStorage {
private static MyGuiStorage _instance = null;

//The object SpringBoot should have access to
private static GuiObject myObj = null;

protected MyGuiStorage () {
  // Don't allow public instantiation
}

public static MyGuiStorage getInstance() {
  if( _instance== null) {
      _instance= new MyGuiStorage();
  }
  return instance;
}

public void setGuiObject(GuiObject myObj) {
  this.myObj = myObj;
}

public GuiObject getGuiObject() {
  return myObj;
}
}

然后Spring可以使用MyGuiStorage.getInstance().getGuiObject();

访问它