이번 프로젝트는 이미지 게시판을 중점적으로 사용해보기 위함이다.


현재는 로그인, 파일 업로드 까지 완료 되었고 이 정도 시점에서 전 프로젝트와 조금씩 비교해보려 한다.

(현플젝 : 친구야 / 이전플젝: 빌더스)


1. web.xml


기본적으로 이번 프로젝트는 최초 생성부터 Spring legacy를 사용했기 때문에

세팅이나 폴더 구조등에 대해 따로 신경 쓸 필요가 없었다.

전 프로젝트는 아예 웹 프로젝트를 메이븐으로 컨버팅 하다보니 폴더구조도 많이 이상하다.


web.xml에서 가장 큰 차이는

<url-pattern>/</url-pattern> 부분이다.


이번 플젝은 RestFul하게 만드는게 목표이므로 기존처럼 .do 로 안했다. 

(실제 웹사이트 중 .do로 불려지는 곳 있는데-가끔- 그럴땐 반갑다)


2. servlet.xml


차이가 많이 난다.

빌더스에선 xml을 하나만 해놨다.(시큐리티 제외) 그렇다 보니 DB 연결 관련된 설정 모두 다 같이 모여있다.

반면에 친구야 에선 root와 servlet을 따로 구분 해놨다.

(빌더스는 root가 없다..)


3. User 컨트롤러

(좌 : 친구야 / 우 : 빌더스)



가장 큰 차이는 일단 logger의 사용.. 오른쪽만 하더라도 syso로 뽑는게 편했따.

물론 지금도 logger를 자유자재로 사용하지는 않고 단지 등록해서 쓰는 정도이지만.

빌더스 할 당시에는 로거 설정 자체를 만드는게 되게 힘들어서 나중에 겨우 하긴 했지만 만족스럽지는 못했다.


두번째로는 URI

이번엔 RestFul 하게 가기 위해 최대한 명사형태로, 간단하게 구성하려 노력중에 있다.

개발자가 제일 어려운 부분이 이름 짓는거라고 하는데 URI가 그러하다. 생각보다 명사, 복수형, 자원을 나타내는.. 식으로 만드는게 쉽지가 않다.


이번 프로젝트는 진행하면서 좀 헷갈리는 부분이 많이 있는데

그중 하나가 @Inject, @autowired다.


빌더스 할때는 무조건 @autowired를 썻다. 이번에는 @inject를 쓴다.

둘다 같은 역할이지만 인젝트는 자바 자체, auto는 스프링에서 제공하는 것이기 때문에

스프링에 종속적이지 않기 위해선 인젝트를 쓰라고 되어있다.


그런데 스프링에 종속적이지 않다는 것은 무슨 말일까

단순히 스프링 지원 말고 다른 프레임 워크에서도 사용가능하다 로 이해하면 될듯 하다.


stackoverflow를 찾아보니 역시나 비슷한 질문이 많다.

결론적으로 보자면 가장 큰 차이는 @required이다.


https://www.linkedin.com/pulse/difference-between-inject-vs-autowire-resource-pankaj-kumar

여기서 설명이 잘 되어있는데 @inject는 만일 프로퍼티가 없을경우 에러를 발생하지만 @autowired는 null로 인식하고 넘긴다고 한다.


One of the differences between @Autowired and @Inject is that @Inject does not have the required field so in case we fail to find a suitable object to injected it will fail while @Autowired can used required=false and allow null able field (only if required!).







+ Recent posts