본문 바로가기
교재 실습/자바 웹 개발 워크북

93. 어노테이션을 이용한 객체 관리 (2)

by Jint 2022. 8. 14.

3. 어노테이션 적용

어노테이션을 정의했으면 이제 DAO나 페이지 컨트롤러에 적용해본다. 먼저 MySqlMemberDao 클래스에 적용한다.

spms.dao.MySqlMemberDao 클래스를 다음과 같이 변경한다.

@Component(value="memberDao") //어노테이션 적용 
public class MySqlMemberDao implements MemberDao {//MemberDao 인터페이스 구현
    ...
}

어노테이션을 적용하는 것은 매우 쉽다. 단지 클래스 선언 위에 @Component를 선언하면 된다. @Component 어노테이션의 사용 문법은 다음과 같다.

@Component(value="객체이름")

value 속성값으로 객체 이름을 지정한다. 페이지 컨트롤러인 경우, 서블릿 URL을 지정할 것이다. ApplicationContext 클래스는 인스턴스를 보관할 때 이 객체 이름을 사용한다. value 속성은 기본 속성이기 때문에 이름을 생략할 수 있다. 따라서 다음과 같이 작성해도 된다.

@Component("객체이름")

 

MySqlMemberDao 클래스처럼 페이지 컨트롤러에 대해서도 적용한다.

(LogInController 클래스, LogOutController 클래스, MemberAddController 클래스, MemberDeleteController 클래스, MemberUpdateController 클래스, MemberListController 클래스)

 

4. 프로퍼티 파일 변경

어노테이션을 적용했다고 프로퍼티 파일이 필요없는 것은 아니다. 우리가 만든 클래스에 대해서는 어노테이션을 적용할 수 있지만, DataSource와 같은 톰캣 서버가 제공하는 객체에는 어노테이션을 적용할 수 없다. 그래서 프로퍼티를 이용한 객체 관리 방법은 그대로 유지한다.

WEB-INF/application-context.properties 파일을 열고 다음과 같이 변경한다.

#1. for ApplicationContext.
jndi.dataSource=java:comp/env/jdbc/studydb

DAO와 페이지 컨트롤러는 어노테이션으로 객체 정보를 관리하기 때문에 프로퍼티 파일에서 제거했다.

프로퍼티 파일에서 제거
#memberDao=spms.dao.MySqlMemberDao
#/auth/login.do=spms.controls.LogInController
#/auth/logout.do=spms.controls.LogOutController
#/member/list.do=spms.controls.MemberListController
#/member/add.do=spms.controls.MemberAddController
#/member/update.do=spms.controls.MemberUpdateController
#/member/delete.do=spms.controls.MemberDeleteController

톰캣 서버가 관리하는 JNDI 객체나 외부 라이브러리에 들어 있는 객체는 우리가 만든 어노테이션을 적용할 수 없기 때문에 프로퍼티 파일에 등록해야 한다.

 

참고도서 : https://freelec.co.kr/book/1674/

 

[열혈강의] 자바 웹 개발 워크북

[열혈강의] 자바 웹 개발 워크북

freelec.co.kr

댓글