我正在创建一个独立的java应用程序,它将打包为jar。现在我需要在每次在某个类中执行方法时加载spring上下文。有没有办法初始化上下文一次并在所有请求中使用它。我知道如果我使用像tomcat这样的容器那么它就是为了这个目的,但那将是一个webapp并且不能满足我的需求。
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@Controller
@EnableAutoConfiguration
public class Controller {
@RequestMapping("/")
@ResponseBody
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Controller.class, args);
}
}

现在如果我执行
C:\ javac Controller.java
C:\ java Controller //Will create an application context evrytime I execute this.

我想要像
这样的东西
//Request 1
C:\ java Controller //1. Creates an Application Context in memory 2. Uses this Application Context.
//Still Application Context is in memory
//Request 2
C:\ java Controller //Uses Application Context created by Request 1.
//Still Application Context is in memory
//Request 3
C:\ java Controller //Uses Application Context created by Request 1.
//Still Application Context is in memory
//And so on....

答案 0 :(得分:0)
你看过Spring Boot了吗?通常,当您启动应用程序时,通常会有一个中央实例维护和保持运行时,通常在“主”线程上。这将是您保留Spring Context实例的地方。
spring上下文的基本思想是,上下文管理所有依赖项并获得注入的实例。所以思维方式是另一种方式(你调用由上下文管理的东西而不是你调用从上下文中检索数据的东西)。两种方式都可以。
HTH,马克