java根据请求参数自动连接RequestScope bean
在spring控制器中,我可以执行以下操作:
@Controller
public class FooController {
@Autowired
private FooServiceFactory factory;
@RequestMapping("foo")
public Foo createFoo(@RequestParam String kind, @RequestParam String id) {
FooService service = factory.getFooService(kind);
return service.get(id);
}
}
现在,如果我有很多方法都是kind
,从FooService service = factory.getFooService(kind);
开始的,那么能够将所有的逻辑移到控制器上就好了
控制器中还有其他地方可以访问请求参数吗
有没有一种有效的说法(我在这里编语法):
private FooService service;
@Autowired
public setKind(@RequestParam String kind) {
service = factory.getFooService(kind);
}
或者有没有更好的方法来封装这样的公共参数
# 1 楼答案
如果使用实例变量来存储
FooService
,则必须确保实现FooService
时考虑线程安全。所以最好的办法是不要使用下面的编码方式你能做的是
在你所有的控制器中使用它
这样可以消除代码重复,同时保证线程安全