[SPRING] 봄 mvc 모든 요청으로 만든 새 콩 개체가 있나요?
SPRING봄 mvc 모든 요청으로 만든 새 콩 개체가 있나요?
Dispatcher 서블릿을 사용하여 봄 MVC에서 단 하나의 bean 객체 만 생성되거나 요청마다 새로운 객체가 생성된다는 것을 이해할 수 없습니까?
컨트롤러 코드 : -
코드에서 나는 LoginBean 객체의 데이터를 설정하고 abc 메소드의 modelandview 객체에 설정합니다.
그런 다음 JSP로 내가 usename에 대한 값을 입력하지 않는 경우, 그 때 양식을 제출할 때 핸들러 메서드 (initform)가 호출 될 때 나에게 어떤 값도 지정하지 않는 동일한 lb.getusername을 인쇄하려고합니다. 개념을 이해할 수 없습니다.
@Controller
public class LoginController{
ModelAndView mv=null;
EmployeeBean e=new EmployeeBean();
AutoBean autobean;
@Autowired
public LoginController(AutoBean autobean){
System.out.println("autobean");
this.autobean=autobean;
}
@RequestMapping(value="/login")
public ModelAndView abc(){
System.out.println("here");
System.out.println("here1");
LoginBean lb=new LoginBean();
lb.setUsename("ankita");//setting value
return new ModelAndView("login","loginbean",lb);
}
@RequestMapping(value="/abc1",method=RequestMethod.POST)
public ModelAndView initform(@ModelAttribute("loginbean")LoginBean lb,BindingResult result,Model model){
System.out.println("*****"+result.getErrorCount());
System.out.println("hello");
autobean.setName("yayme");
System.out.println(autobean.getName());
model.addAttribute("autobean", autobean);
System.out.println("username"+lb.getUsename());// query??
if(lb.getPassword().equals("ankita"))
/*{
mv=new ModelAndView();
e.setId("1001");
e.setName("ankita");
mv.addObject("employee", e);
mv.addObject("emp", new Emp());
mv.setViewName("success");
return mv;
}*/
return new ModelAndView("success","emp",new Emp());
else
return new ModelAndView("fail","lb1",lb);
}
login.jsp
<form:form action="abc1" commandName="loginbean">
username:<form:input path="usename" />
password:<form:password path="password"/>
<input type="submit"/>
</form:form>
제발?
해결법
-
==============================
1.Spring의 애플리케이션 컨텍스트 (Bean 라이프 사이클을 인스턴스화에서 파기까지 관리하는 Bean IoC 컨테이너)에는 Bean 정의가 포함되어있다. 다른 속성들 사이의 이러한 정의는 소위 스코프 (scope)를 포함합니다. 이 범위는 다음 값을 가질 수 있습니다.
Spring의 애플리케이션 컨텍스트 (Bean 라이프 사이클을 인스턴스화에서 파기까지 관리하는 Bean IoC 컨테이너)에는 Bean 정의가 포함되어있다. 다른 속성들 사이의 이러한 정의는 소위 스코프 (scope)를 포함합니다. 이 범위는 다음 값을 가질 수 있습니다.
다음과 같은 몇 가지 특별한 범위를 가질 수 있습니다.
자신 만의 범위를 만들 수도 있습니다. bean의 기본 범위는 singleton입니다. 따라서 별도로 지정하지 않으면 bean은 singleton (응용 프로그램 당 단일 인스턴스)입니다.
@ Component와 유사한 주석 (@Controller 등)으로 주석이 추가 된 클래스를 검색하는 component-scan을 사용하는 경우 이러한 클래스는 응용 프로그램 컨텍스트에서 자동으로 Bean 정의로 등록됩니다. 기본 범위가 해당 범위에도 적용됩니다.
자동 등록 빈의 범위를 변경하려면 @Scope 주석을 사용해야합니다. JavaDoc을 사용하는 방법을 알고 싶다면 JavaDoc을 확인하십시오.
TL; 귀하의 LoginController는 싱글 톤입니다.
from https://stackoverflow.com/questions/17067574/is-there-a-new-bean-object-created-with-every-request-in-spring-mvc by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring Security는 로그인 후 항상 403 accessDeniedPage를 반환합니다 [duplicate] (0) | 2019.02.26 |
---|---|
[SPRING] Eclipse에서 모든 JUnit 테스트를 독립적으로 실행하고 매번 Spring 컨텍스트를 다시로드합니다. (0) | 2019.02.26 |
[SPRING] 부모 태그에서 Maven 속성을 확인할 수 없음 (0) | 2019.02.26 |
[SPRING] Spring @Component 또는 다른 파생물을 사용하지 않고 구성 요소를 자동 줄 바꿈하는 방법 (0) | 2019.02.26 |
[SPRING] 보안되지 않은 URL에 대해 401을 반환하는 Spring 테스트 (0) | 2019.02.26 |