Tôi muốn sử dụng bean mẫu được chú thích trong bộ điều khiển của mình. Nhưng mùa xuân đang tạo ra một chiếc đậu đơn thay thế. Dưới đây là mã cho rằng:@Scope ("nguyên mẫu") phạm vi đậu không tạo bean mới
@Component
@Scope("prototype")
public class LoginAction {
private int counter;
public LoginAction(){
System.out.println(" counter is:" + counter);
}
public String getStr() {
return " counter is:"+(++counter);
}
}
đang điều khiển:
@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;
}
}
Velocity template:
LoginAction counter: ${loginAction.str}
Xuân config.xml
có thành phần quét được kích hoạt:
<context:annotation-config />
<context:component-scan base-package="com.springheat" />
<mvc:annotation-driven />
Tôi nhận được số gia tăng mỗi lần. Không thể tìm ra nơi tôi đang đi sai!
Cập nhật
Như suggested by @gkamal, tôi đã HomeController
webApplicationContext
-aware và nó đã giải quyết được vấn đề.
đang được cập nhật:
@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");
}
}
Tôi ước gì có thể tăng gấp đôi upvote bạn để thực hiện các câu trả lời đúng trong mã của bạn cho người khác để thấy sự khác biệt thực tế –