Spring에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller와 @RestController가 있습니다. 전통적인 Spring MVC의 컨트롤러인 @Controller와 Restuful 웹서비스의 컨트롤러인 @RestController의 주요한 차이점은 HTTP Response Body가 생성되는 방식입니다. 이번에는 2가지 어노테이션의 차이와 사용법에 대해 알아보도록 하겠습니다. 1. @Controller 이해하기[ Controller로 View 반환하기 ]전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용합니다. 아래와 같은 과정을 통해 Spring MVC Container는 Client의 요청으로부터 View를 반환합니다. Clien..
일반적으로 단말기에서 필요로 하는 데이터들은 Server에서 관리합니다. 네트워크를 통해 서버로부터 데이터를 가져오기 위한 통신을 구현하기 위해서는 크게 Http 프로그래밍과 Socket 프로그래밍 2가지가 있는데, 오늘은 이 2가지 네트워크 프로그래밍 방식의 차이에 대해 알아보도록 하겠습니다. 1. 소켓(Socket) 프로그래밍 [ 소켓(Socket) 프로그래밍 이란? ] Server와 Client가 특정 Port를 통해 실시간으로 양방향 통신을 하는 방식 Socket 연결은 TCP/IP 프로토콜을 기반으로 맺어진 네트워크 연결 방식입니다. 그리고 이러한 Socket 연결 방식으로 프로그래밍 하는 것을 소켓(Socket) 프로그래밍이라고 하는데, Socket 프로그래밍은 Server와 Client가 특..
1. Static 정리 Java에서 Static 키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미합니다. 이를 정확히 이해하기 위해서는 메모리 영역에 대한 이해가 필요합니다. [ Static의 메모리 ] 일반적으로 우리가 만든 Class는 Static 영역에 생성되고, new 연산을 통해 생성한 객체는 Heap영역에 생성됩니다. 객체의 생성시에 할당된 Heap영역의 메모리는 Garbage Collector를 통해 수시로 관리를 받습니다. 하지만 Static 키워드를 통해 Static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점을 지니지만, Garbage Collector의 관리 영역 밖에 존재하므로 Static을 자주 사용하면 프로그램의 종료시까지 ..
최근에 진행중인 프로젝트에서 Google Drive API, Google App Script 등을 사용하고 있는데, 오늘은 이러한 것들을 사용하기 위해 요청을 보내는 방식인 Rest API에 대해 알아보도록 하겠습니다. 1. RESTful API란? RESTful API라는 단어에서 사용되는 REST(REpresentational State Transfer)의 개념을 한줄로 정의하자면 아래와 같이 정의할 수 있습니다. HTTP 통신에서 어떤 자원에 대한 CRUD 요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식 즉, REST란 어떤 자원에 대해 CRUD(Create, Read, Update, Delete) 연산을 수행하기 위해 URI(Resource)로 요청을 보내는 것으로, ..
2018년 대학생으로의 마지막 여름방학을 보내면서, 작성하는 코드의 Quality를 높이고자 친구와 함께 Robert C.Martin의 Clean Code라는 책을 집어들었습니다. 단순 독서로는 얻은 내용을 까먹을 뿐만 아니라, 적용하지 못할 것 같아서 유용한 내용 혹은 몰랐던 내용을 정리하였습니다!! 생각보다 간단한 내용들일수도 있지만 직접 코딩을 할 때는 놓쳤던 부분들이 많았던 것 같습니다ㅠㅅㅠ 1. 유효한 내용 정리 개인적으로 Interface를 활용한 다형성에서 많은 것들을 느꼈는데 이 부분은 따로 포스팅하도록 하겠습니다:) Flag 값을 Parameter로 주지 마라! 함수는 최대한 작게 만들며 하나의 역할만을 하도록 만들어야 한다. 하지만 Flag값을 인수로 준다는 것은 Flag 검사도 하고,..