java spring @component范围和HttpServletRequest

时间:2016-03-23 19:07:14

标签: java spring scope spring-boot autowired

我的一个类处理HttpServletRequest,它是一个像这样的组件:

@Component
public class AuthorizationService {

    @Autowired
    HttpServletRequest request;

    public Boolean authorize(Integer fetId) {
       ...play with headers, db and other stuff...
    }

并在其他地方使用

public class CarRestController {
    @Autowired
    CarService service; 
    @Autowired
    AuthorizationService authorizer;

    @RequestMapping(method = RequestMethod.GET)
    public List<Car> get()throws Exception {
        authorizer.authorize(666);
        ...
        return cars;
    }

我担心的是,由于AuthorizationService是一个@component,默认情况下它将是一个单例,因此只有一个请求会被处理后的新请求交换。

我应该这样做来解决问题吗?

@Component
@Scope("prototype")
public class AuthorizationService {

非常感谢

2 个答案:

答案 0 :(得分:0)

删除服务上的@Scope并且不用担心,您的控制器也是一个单独的(因为它由spring管理)。

BTW:您在控制器上缺少@Controller

一些阅读:

答案 1 :(得分:0)

Spring会自动处理像HttpServletRequest这样的请求范围对象。删除@Scope,你应该没问题。