본문 바로가기
프로그래밍/JavaWebProgramming

[Lesson06] properties를 이용 객체 관리 설명 1

by Luhie 2016. 12. 30.

어제까지는 MVC에 대한 구동원리를 배웠고

더이상 컨트롤러를 손대지않아도 된다

하지만 이제는 리스너를 손대야 한다


톰캣은 서블릿 객체를 관리하지 일반 객체를 관리하지는 않는다

일반 객체를 관리하는 클래스 역할을 하는게 Spring 프레임 워크이다.

mvc는 서블릿 프레임워크

di는 객체관리를 편하게 해주는 프레임워크


A라는 클래스가 추가 될때 마다 리스너에 등록을 해줘야하는데

리스너는 서블릿인데 서블릿은 객체를 관리역할을 하는 것이 아니다

그러므로 리스너는 객체와 관련된 부분을 관여하지 않고

setter를 찾아 주입을 시켜줄 것이다


결론적으로는 객체를 관리하는 메인을

Dispatcher 서블릿이 리스너를 통해 가져왔다면

이제는 application-context를 통해 가져오게 할 것이다.


1) MVC 프레임워크 컨트롤러 자동화

2) DI 객체 관리 자동화

3) 에노테이션을 이용한 자동화 


application-context.properties 파일 생성[각주:1]

ApplictionContext.java 생성


properties의 위치를 web.xml에 기록


ContextLoaderListener.java 객체관리하던 코드 삭제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  InitialContext initialContext = new InitialContext();
  DataSource ds = (DataSource)initialContext.lookup("java:comp/env/jdbc/studydb");
  
  MySqlMemberDao memberDao = new MySqlMemberDao();
  memberDao.setDataSource(ds);
  
  sc.setAttribute("/auth/login.do"
      new LogInController().setMemberDao(memberDao));
  sc.setAttribute("/auth/logout.do"new LogOutController());
  sc.setAttribute("/member/list.do"
      new MemberListController().setMemberDao(memberDao));
  sc.setAttribute("/member/add.do"
      new MemberAddController().setMemberDao(memberDao));
  sc.setAttribute("/member/update.do"
      new MemberUpdateController().setMemberDao(memberDao));
  sc.setAttribute("/member/delete.do"
      new MemberDeleteController().setMemberDao(memberDao));
cs


ContextLoaderListener.java

properties의 위치를 알려줘야 한다.

private으로 생성 했기때문에 밖에서 쓸수 있도록 getter를 제공

실제로 WEB-INF안에 있는데 servlet만 읽을 수 있기 때문에 RealPath를 사용해 

전체 주소를 알려줌


ApplicationContext에는 디폴트 생성자 밖에 존재 하지 않아

propertiesPath를 받을 수가 없어 새로운 생성자를 선언


ApplicationContext.java

application-context.properties를 읽어 객체관리.

새로운 생성자를 선언하게 되면 디폴트 생성자가 사라져 직접 선언 해주고

propertiesPath를 받을 수 있드록 생성자 선언.


  1. 복잡한 값 매핑은 xml 간단한 값 매핑은 properties 코드 자체가 읽어내는게 properties가 편하다 프레임 워크는 xml을 쓴다 하지만 요즘에는 xml보다는 에노테이션을.. [본문으로]