본문 바로가기

RESTful에 대해서 설명해주세요.(REST, RESTful, RESTful API 개념 정리) REST가 뭐에요? RESTful에 대해서 설명해주세요. REST가 무엇인가?REST는 분산 시스템 설계를 위한 아키텍처 스타일이다.아키텍처 스타일이라는건 쉽게 말하면 제약 조건의 집합이라고 보면 된다.RESTful은 무엇인가?RESTful은 위의 제약 조건의 집합(아키텍처 스타일, 아키텍처 원칙)을 모두 만족하는 것을 의미한다.REST라는 아키텍처 스타일이 있는거고 RESTful API라는 말은 REST 아키텍처 원칙을 모두 만족하는 API라는 뜻이다.우리가 REST와 RESTful을 동일한 의미로 사용하곤 하는데 엄격하게는 다르다는 것을 알 수 있다.->이로써 REST와 RESTful, RESTful API가 무엇인지, 어떻게 다른지를 말할 수 있게 되었다.REST가 필요한 이유는 뭘까?1. 위에서 ..
스프링 애플리케이션이 시작, 종료될 때 수행할 메서드 지정하는 방법 + 스프링 빈(Bean)이 생성, 소멸될 때 수행할 메서드 지정하는 방법(graceful 종료, CommandLineRunner, ApplicationListener, InitializingBea.. 스프링 애플리케이션 시작과 끝 스프링(스프링부트)으로 애플리케이션을 개발했을 때, 애플리케이션이 시작할 때 어떤 동작을 하고 싶은 경우가 있고, 반대로 애플리케이션이 종료되기 직전에 어떤 동작을 하고 싶은 경우가 있다.예를들면 어떤 Configuration에서 값을 가져와서 초기 값을 설정한다든지, 애플리케이션이 종료되기 전에 하던 작업과 객체들을 우아하게(graceful) 종료한다든지 하는 작업들이다.더 쉽게 표현하면 애플리케이션 입장에서의 생성자와 소멸자가 필요할 때가 있다는 것이다.이 문제를 스프링에서는 인터페이스로 아주 쉽게 제공해준다.뿐만 아니라 Spring bean이 생성될 때와 삭제될 때 수행하는 메서드를 구현할 수 있게 인터페이스로 제공한다.아래에 코드를 보자!1234567891011121..
네트워크 공부하기 전 인터넷이 어떻게 생겨먹었는지 알아보는 네트워크 기초(5분만에 보는 최소한의 네트워크 구조) 인터넷과 네트워크 구성 이 포스트는 그냥 잘 만든 프레임워크에서, 잘 만든 라이브러리를 이용하여 개발하는 필자와 같은 사람이 네트워크에 아주 작은 관심을 갖게되어 개발에 약간이나 도움이 될만한 기초적인 내용을 정리한 포스트다.사실 명확하게 "개발에 도움이 된다!" 고 말할 수는 없겠지만 요즘 개발자들이 인프라도 만지고 그러니까, 그리고 인터넷/네트워크 통신 한다는 사람들이 이 정도의 기본은 알아야지 하는 마음으로 공부해봤다.그리고 그 내용을 정리한 것이 아래와 같다.인터넷 : 인터넷은 여러 작은 네트워크들을 묶은 것을 이야기한다. 우리가 LAN케이블로 PC에 연결해서 사용하는 네트워크 망 전체를 인터넷이라고 한다고 보면 된다.이더넷 : 이더넷은 다른 피씨와 통신하는 방법 중에 하나로 CSMA/CD라는 프..
자바 메서드 '잘' 작성하는 방법, 알면서 못 지키는 것들(이펙티브 자바 스터디 - 메서드) 어떻게 해야 메서드 잘 만들었다고 소문이 날까? 개발을 하면서 가장 많이 하는 일이면서 가장 난해한 것이 메서드 작성이 아닐까 싶다."하나의 메서드에서는 하나의 작업만 한다!" 라는 기본 원칙을 지키려고 하면서도 잘 안된다.사소하게는 private으로 할지 public으로 해야 할지등 정해야할 것들이 너무도 많은 것이 메서드다.역시나 한 번에 제대로 작성하려고하면 어렵다. 대신 유념하면서 고치고 또 고치면서 배우는게 코딩아닐까 싶다.회사를 다닌다면 코드 리뷰를 하는 이유도 올바른, 좋은 메서드를 개발하기 위함이 아닐까 한다.결국 좋은 메서드를 만드려면 기본 원칙을 잘 알고 시도하고 리팩토링을 거쳐봐야 한다. 그래서 아래에 기본 원칙을 소개하려고 한다.메서드 작성 기본 원칙 - 파라미터가 유효한지 검사하라..
일반적인 프로그래밍 원칙(effective java 3판 스터디, 자바에서 경계해야할 것들 간단 정리) 일반적인 프로그래밍에서 하지 말아야할 것 먼저 일반적인 프로그래밍에서 하지 말아야할 것에 대해 말하기 전에 소개하고 싶은 것이 있다.이 글은 이펙티브 자바 3판을 읽으면서 처음쓰는 글이다.그런데 포스트의 내용은 첫 장에 나오는 내용이 아니라 중간에 나오는 내용이다.왜 이렇게 글을 쓰냐면 이 책은 스터디 방법이 좀 달라야한다고 생각하기 때문이다.이 책을 한 번 읽고 완전히 이해하고 적용하는 사람은 없다고 생각한다.그냥 쭉 읽고 이해한 부분을 정리하고 적용할 수 있는 건 해보면 그걸로 충분한 것 같다.이해하지 못한 부분은 또 읽으면 되니까. 좀 더 레벨업하고 와서 보면 또 다르게 이해가 되는 것도 있겠지 하는 마음의 스터디 방법이다. (추천합니다.)각설하고 간단하게 정리하며 한 번 더 공부해본다.1. 지역 ..
spring-boot-starter-data-redis 사용기, get/set 예제와 pub/sub 예제 간단하게 만들고 테스트해봤습니다. spring boot에서 redis 사용하는 방법 지난 포스트 중 자바에서 redis(Jedis)를 사용한 포스트가 있었다.jedis 라이브러리를 직접 불러와서 사용했었지만 이번에는 spring boot에서 starter로 제공하는 라이브러리로 사용하는 것을 해봤다.이것 또한 jedis를 사용하는 것과 다르지 않다.spring에서 redis와 관련한 라이브러리를 추상화시켜서 사용할 수 있게 해준 것이다.무슨말이냐면 자바에서 주로 사용하는 redis 라이브러리로는 jedis와 lettuce가 있다.두 라이브러리를 공통으로 추상화해서 둘 중에 어떤 것을 쓸 것인지는 설정을 통해 사용할 수 있게 하는 것이다.바로 사용해본다.Get, Set Redis는 In Memory key/value Database로 No..
New로 생성한 Instance에서 Bean이 필요할 때 @Autowired 대신 Bean 주입 받는 방법(Spring boot에서 ApplicationContext를 가져와서 넣어버리기) Spring boot에서 Bean 주입 받기 일반적으로 많이 사용하는 WebApplication을 개발하다보면 자연스럽게 @Repository, @Service, @Controller, @Component, ...등을 이용해서 bean으로 등록하고 Bean으로 등록되는 클래스에서 @Autowired로 주입받아 사용하곤 한다. 그런데 스프링으로 애플리케이션을 개발하다보면 Bean이 아닌 클래스에서 Bean을 주입받을 필요가 있을 때가 있다.static 메서드에서 필요하든지 new로 생성한 인스턴스에서 Bean을 참조해야한다든지 하는 경우다.이럴 때 스프링을 기초부터 배웠다면 쉽게 해결할 수 있다.@Autowired 애노테이션 자체가 spring IoC Container(ApplicationContext)에..
자바 Comparable, Comparator 하면 '정렬'을 떠올려라, 자바 객체 정렬의 '기준'을 정하는 방법! (비교랑 다릅니다!) Java Comparable, Comparator Comparable, Comparator 가 무엇인지 알아보기 전에 확실히 해야할 것이 있다.Comparable, Comparator하면 '정렬'을 떠올려야하는 것이다.Compare 하면 "비교"고 Comparable하면 "비교 가능한" 이렇게 해석할 수 있기 때문에 "비교"가 먼저 떠오를텐데 이것을 가지고 같다 혹은 크다, 작다를 구분하는 단순 비교를 할 수 있는 것은 아니다.명확하게는 "정렬할 때 비교가 가능하다.", "정렬할 때 기준을 정할 수 있다." 가 맞다.단어적인 측면에서 보았을 때 오해할 수 있는 것을 알아봤다면, Comparable과 Comparator가 언제 어떻게 쓰는지 알아보면 좋을 것이다.우선 자바에서 객체를 정렬할 때 일정한 기준..