본문 바로가기

전체 글15

[Spring] 스프링 애플리케이션에서 서버 단에서의 처리 결과를 HTTP Response Body에 바로 담아서 반환해주는 방법 (view 형으로 내보내는 것이 아닌) 예전에 스프링 애플리케이션에서 서버에서 처리한 결과를 리턴할 때 많이 쓰던 방식은 Model, ModelAndView 같은 객체에 결과 데이터를 담고 ( model.addAttribute() / mv.addObject() ) 뷰 경로명을 리턴해주면 ( return “뷰 경로” / mv.setViewName(”뷰 경로”) ) ViewResolver로 해당 뷰를 찾고 데이터를 넘겨주어 최종 결과를 완성해서 표시해주는 방식이었다. 근데 이렇게 결과 데이터를 view의 그릇에 담아 표시하는 방식이 아닌 HTTP 응답 몸체(HTTP Response의 Body 부분)에 처리결과를 직접 담아서 바로 내보내 주고, 클라이언트에선 이를 JSON 형태로 받아서 볼 수 있는 방식이 있다. → 이를 이용하면 view 없이도 .. 2022. 3. 18.
[Spring] 제어의 역행(IoC) 그동안 '제어의 역행'에 대해 명확히 정리되지 않았었다. 하여 이번에 '제어의 역행'을 명료하게 정리하고자 포스팅을 작성하였다. 제어의 역행 이란 제어의 역행(Inversion of Control)은 결국 ‘객체’에 대한 것이다. 한 클래스에서 객체 A가 필요하다고 하자. 이 클래스에서 객체 A를 사용하려면 일반적으로는 객체 A를 생성하는 객체 생성문이 있어야 한다. 즉 객체A objA = new 객체A(); 위 생성문이 있어야 객체를 생성해내고 그걸 이용할 수가 있을 것이다. 위와 같은 ‘직접 객체 생성문을 작성하는 방식’이 엔터프라이즈 애플리케이션 개발에서 좋지 않은 이유 및 한계 단도직입적으로 말하면 객체지향적이지 않고, 유지보수성이 나쁘다. - 유지보수성이 나쁘다 엔터프라이즈 애플리케이션은 클래스.. 2022. 3. 12.
[Spring] 스프링에서 멤버 필드에 의존성 주입을 표현할 때 'final'은 괜찮지만 'static final'은 안되는 이유 (참조: https://djkeh.github.io/articles/Why-should-final-member-variables-be-conventionally-static-in-Java-kor/) 상황 스프링에서 멤버 필드에 의존성 주입을 표현하는 코드를 보면 으레 다음과 같이 'private final 타입 필드명'으로 돼있다. public class MovieRecommender { private final CustomerPreferenceDao customerPreferenceDao; // 굳이 (시스템적으로) 재할당 자체는 가능함을 열어둘 필요가 없으므로 final 설정 CustomerPreferenceDao - 변수의 타입 customerPreferenceDao - 변수명 멤버 필드에 의존성 .. 2022. 3. 5.
[OS] 런타임(Runtime)과 런타임 환경(Runtime Environment) 컴퓨터를 사용하다 보면 종종 런타임이라는 말을 볼 때가 있다. 런타임 에러(Runtime Error), 런타임 환경(Runtime Environment) 등등 친숙할 정도로 꽤 많이도 접하는데 정작 정확한 의미는 몰랐었다. 그래서 이번 기회에 정확하게 정리를 하고 넘어가고자 런타임과 런타임 환경에 대해 포스팅을 하였다. (구글에서의 자료들을 읽고 비교하며 정리한 것으로 혹시 부정확한 부분이 있을 시 댓글로 첨언해주시면 감사히 반영하겠습니다) 런타임(Runtime) 런타임(Runtime)은 '어떤 프로그램이 실행되고 있는 동안의 동작'을 가리킨다. 구체적으로 말하면 "해당 프로그램이 필요한 시스템 자원(RAM, 시스템 변수, 환경변수 등)을 할당받고 실제로 시스템 자원을 사용해서 어떤 처리를 하고 있는 것.. 2022. 3. 5.