मैं अपने नियंत्रक में एक एनोटेटेड प्रोटोटाइप बीन का उपयोग करना चाहता हूं। लेकिन वसंत इसके बजाय एक सिंगलटन बीन बना रहा है। यहाँ उस के लिए कोड है:@ स्कोप ("प्रोटोटाइप") बीन स्कोप नया बीन नहीं बना रहा
@Component
@Scope("prototype")
public class LoginAction {
private int counter;
public LoginAction(){
System.out.println(" counter is:" + counter);
}
public String getStr() {
return " counter is:"+(++counter);
}
}
नियंत्रक कोड:
@Controller
public class HomeController {
@Autowired
private LoginAction loginAction;
@RequestMapping(value="/view", method=RequestMethod.GET)
public ModelAndView display(HttpServletRequest req){
ModelAndView mav = new ModelAndView("home");
mav.addObject("loginAction", loginAction);
return mav;
}
public void setLoginAction(LoginAction loginAction) {
this.loginAction = loginAction;
}
public LoginAction getLoginAction() {
return loginAction;
}
}
वेग टेम्पलेट:
<context:annotation-config />
<context:component-scan base-package="com.springheat" />
<mvc:annotation-driven />
:
LoginAction counter: ${loginAction.str}
स्प्रिंग config.xml
घटक स्कैनिंग सक्षम किया गया
मुझे हर बार एक बढ़ी हुई गिनती मिल रही है। यह पता नहीं लगा सकता कि मैं गलत कहां जा रहा हूं!
अद्यतन
suggested by @gkamal रूप में, मैं HomeController
webApplicationContext
-aware बना दिया है और यह समस्या हल हो।
अद्यतन कोड:
@Controller
public class HomeController {
@Autowired
private WebApplicationContext context;
@RequestMapping(value="/view", method=RequestMethod.GET)
public ModelAndView display(HttpServletRequest req){
ModelAndView mav = new ModelAndView("home");
mav.addObject("loginAction", getLoginAction());
return mav;
}
public LoginAction getLoginAction() {
return (LoginAction) context.getBean("loginAction");
}
}
काश मैं में सही जवाब लागू करने के लिए आप वोट दें दोगुनी हो सकती है दूसरों के लिए वास्तविक अंतर देखने के लिए आपका कोड –