미니 MVC Framework 만들기 네번째 단계,
프로퍼티와 어노테이션을 활용한 의존성 주입 자동화.
문제점 착안,
지금까지, 각 요청에 따른 페이지 컨트롤러를 생성하고, DAO객체를 주입하는 과정을
하드코딩을 통해 해결했다.
그 결과 ContextLoaderListener 클래스가 매우 지저분해졌다.
이를 해결하기 위해 프로퍼티 파일과 어노테이션을 이용하여,
객체를 생성하고 의존성을 주입하는 부분을 자동화할 것이다.
해결방안,
프로퍼티 파일에 설정된 객체와 어노테이션을 통해 설정된 객체를 준비하는 일을 할 ApplicationContext라는 클래스를 만든다.
이 클래스는 ContextLoaderListener에 의해 호출된다.
구체화,
ContextLoaderListener>
웹 애플리케이션이 실행되면서 호출되는 contextInitialized 메소드에서는 propertiesPath를 꺼내고, ApplicationContext 인스턴스를 생성한다.
1 2 3 4 | ServletContext sc = event.getServletContext(); String propertiesPath = sc.getRealPath(sc.getInitParameter("contextConfigLocation")); applicationContext = new ApplicationContext(propertiesPath); | cs |
ApplicationContext>
이 클래스는 인스턴스화 되는 순간, 여러가지 일을 한다.
1 2 3 4 5 6 7 8 | public ApplicationContext(String propertiesPath) throws Exception { Properties props = new Properties(); props.load(new FileReader(propertiesPath)); prepareObjects(props); prepareAnnotationObjects(); injectDependency(); } | cs |
1. ContextLoaderListener로부터 전달받은 propertiesPath를 통해 properties파일을 로딩한다.
=> properties props = new Properties( );
2. Tomcat Server로부터 DataSource를 받아온다.
=> prepareObjects
3. MemberDao 객체, PageController 객체 등 필요한 객체들을 생성하여, HashTable에 정리한다.
=> prepareAnnotationObjects
4. MemberDao에 DataSource를 주입하고, PageController에 memberDao를 주입한다.
=> injectDependency
'Dev.BackEnd > Servlet&JSP' 카테고리의 다른 글
#미니 MVC FrameWork 작동원리 정리 (0) | 2016.07.30 |
---|---|
#미니 MVC FrameWork 만들기 세번째 단계, 프런트 컨트롤러 자동화 (0) | 2016.07.29 |
#미니 MVC FrameWork 만들기 두번째 단계, DAO 조작 (0) | 2016.07.29 |
#미니 MVC FrameWork 만들기 첫번째 단계, 컨트롤러의 분리 (0) | 2016.07.28 |
5. Model 1 에서 Model 2 까지 변화과정 3편 (0) | 2016.07.07 |