• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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

20.07.05 19:47 작성 조회수 178

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의 빈을 하나 더 정의한부분입니다.