在Spring控制器中的请求之间共享arraylsit

时间:2017-06-04 10:17:53

标签: java spring spring-boot

我在spring控制器的2个webservices中使用了相同的ArrayList,所以我想使用请求或会话范围从DB中获取一次我试图创建一个bean

@WebAppConfiguration
public class exampleBean {
List<user> users = new ArrayList<user>();

@Bean
@Scope(value = "request")
public List<user> getuserList(){
    return users ;
}

@Bean
@Scope(value = "request")
public void setAttendessList(List<user>  userList){
    users = userList;
}

}

在控制器

ApplicationContext ctx = new AnnotationConfigApplicationContext(exampleBean .class);     AttendeesBean attendeeBean = ctx.getBean(exampleBean .class);

在第一次服务中我设置了列表,但在第二次服务中找不到它。

2 个答案:

答案 0 :(得分:0)

我刚刚将@Scope(value =“request”)更改为 @Scope(value =“session”,proxyMode = ScopedProxyMode.INTERFACES)

使用@AmtiK建议并进行一些搜索。

它有效

答案 1 :(得分:0)

问题在于scope,当您定义request范围时,值或bean将在单个请求中可用,并且不能用于其他请求。请阅读spring scopes了解详情。

因此,一旦您将范围更改为session,则在一个请求中创建的所有bean /对象将可用于同一会话中的所有其他请求。因此,将范围更改为session可以解决您的问题。