0

私はそのような使用法が必要です:

リクエストごとに userId を DemoController に注入したいのですが、空のコンストラクターのない最終クラスであるため、注入できません。そのような場合のベストプラクティスは何ですか? リクエストスコープのサービスでいいの?

@Configuration
public class CityFactory{

   @Bean(name = {"currentUserId")
   @Scope(value = WebApplicationContext.SCOPE_REQUEST,proxyMode = ScopedProxyMode.TARGET_CLASS)
   @Autowired
   public Integer getUserId(HttpServletRequest request) {
       return UserUtil.getCurrentUserId(request.getServerName());
   }
}


@RequestMapping("/demo")
@Controller
public class DemoController {

    @Autowired
    Ingeter userId;

    @RequestMapping(value = "/hello/{name}", method = RequestMethod.GET)
    public ModelAndView helloWorld(@PathVariable("name") String name, Model model) {
        Map<String, Object> myModel = new HashMap<String, Object>();
        model.addAttribute("user", userId);
        return new ModelAndView("v3/test", "m", model);
    }
}
4

2 に答える 2

3

最善の策はUserId、と呼ばれる明示的なクラスを作成することです。このクラスには整数が含まれます。これは、CGLIBのプロキシとの相性が良いだけでなく、デザインを明確にします。

于 2011-02-18T11:30:55.327 に答える