강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

dlawnstn12345님의 프로필 이미지
dlawnstn12345

작성한 질문수

윤재성의 만들면서 배우는 Spring MVC 5

미니 프로젝트 관련 질문 드립니다.

작성

·

267

0

1. 첫번째 질문은 굳이 로그인 UserBean을 따로 빈으로 왜 설정해야 하는 지가 궁금합니다. 위의 사진처럼 그냥 그 자리에서 바로 UserBean loginUserBean을 자동 주입으로 넣어도 결과가 제대로 나오는 것 같은데 저렇게 하면 안되나요? 어차피 싱글톤이라서 똑같은 것 아닌가요?

2.@component는 개발자가 개인적으로 만든 클래스를 빈으로 등록, @Bean은 개발자가 손댈 수 없는 라이브러리를 빈으로 등록할 때 쓴다고 들었습니다. 근데 UserBean클래스는 개발자가 개인적으로 만든 클래스인데 Bean으로 왜 등록해야하는 지가 궁금합니다.

답변 1

0

소프트캠퍼스님의 프로필 이미지
소프트캠퍼스
지식공유자

1. 언급하신대로 하셔도 bean은 주입됩니다. 하지만 따로 loginUserBean을 정의한 이유는 UserBean의 사용목적 때문입니다. 회원가입, 수정 등에서 사용할 UserBean은 데이터베이스 처리가 완료되면 폐기할 Bean들이고 loginUserBean은 사용자가 브라우저를 닫을 때 까지 사용할 bean이기 때문입니다. 클래스는 같지만 용도가 다르고 수명이 다르기 때문에 bean을 별도로 정의한 부분입니다.

2. 1번과 관계가 있는데요.. loginUserBean을 @Component로 정의하지 않은 이유가 UserBean의 경우 사용 목적에 따라 수명이 다르기 때문입니다. 만일 loginUserBean도 @Component로 정의한다면 UserBean과 똑같은 클래스를 새롭게 정의해야 합니다. @component는 개발자가 개인적으로 만든 클래스를 빈으로 등록, @Bean은 개발자가 손댈 수 없는 라이브러리를 빈으로 등록이라는건 일반적으로 이렇게 합니다~~ 라는 것이지 반드시 그렇게 해야 하는것만은 아닙니다.. @Component의 경우 어차피 클래스를 만들어야 하니깐 클래스 만들 때 Bean도 같이 정의하자..해서 지원되는 부분입니다... 본 프로젝트에서는 UserBean의 사용용도와 수명이 두 가지로 구분되고 있기 때문에 같은 클래스를 놓고 @Component로 Bean을 한번 등록하고 Session Scope의 빈을 하나 더 정의한부분입니다. 

dlawnstn12345님의 프로필 이미지
dlawnstn12345

작성한 질문수

질문하기