본문 바로가기
[ Developer ]/Spring Framework

[Spring] 스프링 빈 분리 Bean Config 분리

by 김현섭. 2016. 6. 10.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Bean Config 분리
  • applicationContext.xml이 커지기 않게 분리를 시켜주는 작업
  • bean 설정이 Dispatcher Servlet에 모두 설정이 된다면 파일이 너무 커져 관리의 불편함 때문
  • 관련된 Bean 들을 한 곳에 정의하고 Listener를 통해서 모두 Loading

우선 실습을 하기 위해서 기본 패키지에서 Biz를 만든다 그리고 ArticleBiz라는 Interface를 생성한다


그리고 biz 패키지 내에 impl이라는 패키지를 생성한 후 클래스를 생성해서 ArticleBiz Interface를 implements 시킨다


그리고 logback을 사용하기 위해서 Logger 객체를 생성한다 


그리고 debug 레벨에 로그를 남겨준다


그렇다면 패키지의 구조는 다음과 같이 형성된다


기능에 관련된 내용들을 하나로 몰아준다 패키지 내에는 Interface 클래스만 모아 두고 impl 안에 구현체 클래스를 넣어준다

이제 ArticleController에서 ArticleBiz를 정의해준다 여러 가지 클래스가 정의될 때 Logger는 항상 위에 와야된다
그리고 난 후 ArticleBiz를 선언하고 Setter만 선언을 해주면 된다


그리고 articleBiz를 생성하기 위해서 applicationContext.xml에서 작성을 해줘야한다 그러기 위해서 우선 bean을 통해서 articleBiz를 선언한다


ArticleController가 정의된 bean에서 property를 이용해서 articleBiz를 넣어준다


그렇다면 ArticleBizImpl이 객체가 생성이 되고 그것을 ArticleController가 가지는 변수로 넣어주는 것이다


그리고 실행을 해보면 정상적으로 로그가 찍히는 것을 볼 수 있다


완료된 applicationContext를 본다면 biz를 제외한 모든 bean을 보면 URL과 관련된 것을 알 수 있다
그러나 biz는 URL에 관련된 것이 아닌 그냥 객체 이므로 관련되지 않다고 볼 수 있다
현재는 단순히 하나의 Biz만 다른 유형 이지만 계속 생성이 된다면 헷갈릴 수 있기 때문에
분리를 시킨다

나중에는 spring 폴더 내의 applicationContext.xml만 존재하는 것이 아닌 
여러가지 기능에 대한 Context가 존재하게 된다

분류를 해주기 위해서 spring 폴더에 xml를 하나 생성한다


거의 패키지명을 이용해서 생성을 해주고 Context가 들어가면 된다
그리고 난 후 기존의 applicationContext에 있는 ArticleBiz를 articleContext.xml로 옮긴다


applicationContext.xml에서 보면 노란줄이 뜨지만 문제없이 실행이 된다


그리고 난 후 web.xml로 간다 빈 공간에서 Ctrl+Space를 눌러서 추가를 하면 된다


contextloaderlistener를 추가한 후 location 위치에 추가를 시켜주면 된다


그러나 다른 Context가 추가되면 계속 추가를 해줘야한다 그러나 계속 추가해야 하는 불편함을 없애기 위해서
다른 방식으로 추가를 하면 모두 자동으로 추가가 된다


이름 부분에 *를 붙여 Context로 끝나는 파일들을 모두 추가하는 방식이다
위에 applicationContext.xml이 이미 로드가 된 상황이면 스프링은 2번 부르지 않고 
한번만 부르고 나머지 로드가 안된 Context.xml을 로드하게 된다

서버 재 시작 후 list로 접근을 하면 잘 되는 것을 볼 수 있다