상세 컨텐츠

본문 제목

레거시 프로젝트 분석하기-1) 이건 대체 무슨 스프링이지?

서랍/기타

by 박복만 2022. 8. 18. 22:27

본문

회사에 들어와서 내가 개발을 맡게될 프로젝트를 보면서 음.... 이 프로젝트는 내가 여태까지 봐왔던( 이라 해봤자.. 강의 보면서 스프링 부트로 만들어본 플젝) 스프링의 모습이랑은 뭔가 다른것같은 느낌이 들었다...

모두 내가 스프링에 대해서 깊지 못하게 알고있기 때문이다. 그렇기 때문에 이번에 마음먹은 기회에 레거시 프로젝트를 속속들이 까보면서 스프링에 대해서도 심도깊게 공부를 해보는 시간을 가지려고 한다.

 

1. 일단 스프링 부트는 아니다!!

스프링 부트 의존성을 가지고 있지 않으니 ㅎㅎ..

우리 프로젝트는 스프링에 관한 의존성은 jersey-spring4밖에 가지고 있지 않다. spring은 알겠는데 jersey는 무엇인가??!?! 

jersey란?

jersey는 Rest 서비스를 개발하는데에 도움을 주는 프레임워크이고 자바의 jax-rs의 구현체이다.. jax-rs가 뭐고 jersey가 무엇인지는 나중에 다시 알아보도록 하자...

 

spring에서는 보통 web 관련을 spring web mvc 를 이용해서 Rest 서비스를 개발하는데 우리는 그 부분을 jersey를 이용한다는 것 까지 알았다. 

 

2.  application context????

프로젝트의 서버가 뜨는 과정에서 spring과 관련된 클래스중 가장 먼저나오는 것은 StaticApplicationContext이다. 

 

StaticApplicationContext ac = new StaticApplicationContext();
ac.refresh();
ConfigurableListableBeanFactory beanFactory = ac.getBeanFactory();

StaticApplicationContext라고 나왔지만 사실은 제일먼저 ApplicationContext가 뭔지 감부터 잡아야한다.

ApplicationContext가 스프링 IOC 컨테이너이다!!!!!!!

나도 한참동안 그냥 감없이 살아왔지만 그냥 application context가 스프링컨테이너다 라고 개념을 잡고있으면 뭔가 후에 이해하는것도 편해진다. 스프링 IOC 컨테이너가 뭔지는 감이오지만 코드상에서 Application Context라고 봤을때는 뭔가 느낌이 안오는게 있다...(공부를안해서겠지만..)

 

그러면 StaticApplicationContext는 무엇일까!!

StaticApplicationContext는 코드로 빈을 등록하는 기능을 지원하는 컨테이너라고 한다. 보통 testing에 유용할 거라고 하는데.. 우리는 프로젝트에 필요한 빈들을 서버가 뜰때 직접 넣어주고 싶어서 쓰나 싶어도 StaticApplicationContext의 registerSingleton 메소드를 바로 쓰는 것도 아니고 getBeanFactory로 beanfactory를 꺼내와서 등록을 한다.

즉 우리프로젝트에서 StaticApplicationContext여야할 필요가 없다. 하나 더 부모 클래스인 GenericApplicationContext를 쓰는게 맞다.. 혹은 StaticApplicationContext를 썼으면 바로 registerSingleton 메소드를 쓰던가...

 

그러면 다음번엔 GenericApplicationContext는 무엇인지로 가볼까..

 

오늘 배운점

1. 우리 프로젝트는 rest service개발을 spring mvc가 아닌 jersey를 이용했구나..

2. 우리 프로젝트는 스프링 컨테이너에 직접 빈을 등록하는 방식을 사용하고 있구나....( 개선될 수 있을것 같은 부분..?)

 

다음번엔

1. 사실 우리는 GenericApplicationContext을 이용하고 있는 건데 얘가 뭐고 얘의 기능이 뭔지를 좀 파보자

관련글 더보기

댓글 영역