访问Spring ResponseBody中的成员变量



我是Spring的新手,这是我的问题。我想访问一个创建的列表,每次特定的路由被调用。这个列表是由一个csv文件创建的,我只想创建这个列表一次。(我知道如何从csv创建列表)。我不明白何时以及是否调用了控制器的构造函数,我不知道是否每次调用路由时,它都会使用控制器的另一个实例?

@Controller
public class Controller {
List<List<String>> csvAsList; // how to initialize this list?
public Controller(List<List<String>> csvAsList) {
this.csvAsList = csvAsList;
}

@RequestMapping(value = "home/{userTypedRoute}")
@ResponseBody
public String printRoute(@PathVariable String userTypedRoute){
//access the list
return userTypedRoute;
}
}

使用依赖注入

创建列表的提供者

@Component
class MyListProvider{
private final List<List<String>> myList;
public MyListProvider(){
myList=createYourListSomehow_YouSaidYouKnowHowToDoIt();
}
public List<List<String>> getMyList(){
return myList
}    
}

并在控制器

中使用它
@Controller
public class Controller {
private MyListProvider myProvider;
public Controller(MyListProvider myProvider){ //injection will happen here
this.myProvider=myProvider;
}

@RequestMapping(value = "home/{userTypedRoute}")
@ResponseBody
public String printRoute(@PathVariable String userTypedRoute){
this.myProvider.getMyList(); //here you go
return userTypedRoute;
}

}

实例化的频率取决于所使用的作用域,但我相信默认作用域是"singleton",这意味着只会有一个实例。

请务必查看文档:https://www.baeldung.com/spring-bean-scopes

最新更新