전체 글
-
Spring boot Actuator 사용해보자 (1)카테고리 없음 2023. 4. 22. 14:40
오늘은 오랜만에 Spring 이야기를 한다. 맨날 원칙원칙 하는 이야기만 했으니 오늘은 쉬어가는 타임으로 재미있는(?)걸 해보도록 하자. 그 중에 오늘은 Spring boot 프로젝트 중에 Actuator 프로젝트가 있다. 이것은 애플리케이션 내부를 볼 수 있게 하는 아주 재밌는 기능이다. Spring의 컨텍스트 빈, 자동설정, 환경설정, 매트릭 정보를 볼 수 있는 아주 유용한 프로젝트이다. 이 포스팅은 Spring boot 1.5 버전의 Actuator롤 소개한다. 이전 버전에서는 조금 다를 수 있으니 참고하면 되겠다. Actuator Endpoints 일단 Actuator 엔드 포인트를 살펴보도록 하자. ID Description actuator HATEOAS가 classpath에 있으면 해당하는 정..
-
리스코프 치환 원칙카테고리 없음 2023. 4. 22. 14:40
오늘도 어김없이 객체지향의 5대 원칙 중에 리스코프 치환의 원칙을 살펴보도록 하자. 이것만 하면 이제 단일책임원칙만 마무리하면 된다. 리스코프 치환의 원칙이라.. 말은 어렵지만 내용은 이해하는 자체는 어려운 편은 아니다. 5대원칙들 중에 나머지들은 이름만 봐도 대충 감을 잡을 수 있었지만 이 리스코프 치환 원칙은 이름만 보고는 전혀 감이 오지 않는다. 이름만 봐도 거부감이 들어서 맨 나중에 살펴본 내용이다. (그럼 단일책임 부터 했어야 했나..) 그럼 일단 리스코프 치환의 원칙의 정의를 보자. 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다. 라고 하지만 정의를 봐도 전혀 이해가 가지 않는다. 그러니 어서 코드를 보자. 리스코프 치환원칙에서 가장 ..
-
Spring boot 2.0 Milestone 1, 2카테고리 없음 2023. 4. 22. 14:40
저번주에 Spring boot 2.0 M2 가 나왔다. 그래서 오늘은 Spring boot 2.0 Milestone 1,2의 변경사항을 살펴보도록 하자. 아직 Milestone 버전이기에 바뀔 가능성이 크지만 그래도 한번 살펴보는 시간을 갖도록 하자. Milestone 1 일단 Milestone 1 부터 바뀐 부분 혹은 삭제된 부분 부터 살펴보자. Deprecations from Spring Boot 1.5 Spring 1.5에 Deprecated 메서드 클래스들은 삭제 되었다. 만약 2.0으로 업그레이드 하기전에 Deprecated 된 부분들은 더 이상 호출하지 않도록 주의하도록 하자. Java 8 baseline 기본적으로 Spring boot 2.0 은 java8+ 이상부터 지원한다. 더이상 jav..
-
java의 Date카테고리 없음 2023. 4. 22. 14:40
오늘도 어김없이 java와 관련된 이야기를 포스팅 하려한다. 요 근래 자주 java와 관련있는 포스팅만 하는 것 같다. 다른 것들도 해야 되는데.. 아무튼 오늘은 java의 날짜와 관련된 포스팅을 한다. java의 날짜 관련API(Date, Calendar 기타 등) 설계부터가 잘못 되었고 구현조차 잘못된 클래스로 java의 가장 악명 높은 대표적인 클래스이다. 기존의 날짜 관련 API들은 문서없이 사용하기 쉽지 않고 일관성도 없는데다 알 수 없는 상수들을 남발한다. 한개씩 살펴보자. 이상한 월 상수 @Test public void constantTest() { Calendar calendar = Calendar.getInstance(); calendar.set(2017, 6, 18); SimpleDat..
-
자바의 제네릭 (Generic)카테고리 없음 2023. 4. 22. 14:40
오늘은 자바의 제네릭과 관련해서 글을 써내려가려 한다. 자바의 제네릭은 어렵다. 필자가 생각하기엔 자바에서 가장 어려운 문법? 부분에 속한다고 할 수 있다. 누군가가 자바에서 가장 어려운게 무엇이냐고 물어보면 1초도 망설이지 않고 제네릭이라고 대답했을 것이다. 그만큼 나에겐 어렵다. 자바의 제네릭을 아주 자유자재로 사용할 수 있는 개발자는 많지 않을 것이라고 생각한다. (내가 못해서 그렇게 생각할지도..) 자바의 Generic은 처음 나왔을 때 부터 있었던 것은 아니다. 1996년에 자바가 처음 발표되고 8년이 지난 2004년에 java5가 발표되면서 Generic이 추가되었다. java5가 발표되면서 아주아주 많은 변화가 있었다. java8의 람다만큼 큰 변화가 많이 있었다. (어쩌면 람다보다 더..)..
-
미리보는 java9카테고리 없음 2023. 4. 22. 14:40
오늘은 미리보는 java9의 새로운 기능들을 살펴보자. 물론 지금은 릴리즈전이라 바뀔 내용이 있을 수 있으니 너무 깊게는 살펴보지 말자. 조만간 java9가 릴리즈 될 예정이다. 원래 일정은 올해 초에 릴리즈 될거라고 했었는데 일정이 밀렸다. 왜 밀린지는 모르겠지만.. 아무튼 담달 27일인 7월27일에 다시 릴리즈 예정일이다. 역시 또 밀릴지는 의문이다. (수정) 또 다시 딜레이 되었다고 한다. 릴리즈 일정은 아래와 같다. 2017/07/06 Final Release Candidate 2017/09/21 General Availability 그전에 안타까운 소식이 하나 있다. java7부터 언급이 많이 되었던 직소(Jigsaw) 프로젝트가 JCP에 통과하지 못하는 일이 발생하였다. 대부분의 회사들이 반대..
-
Java의 HashMap카테고리 없음 2023. 4. 22. 14:40
오늘은 java의 hashMap에 대해서 알아보자. java에서 자주 사용되는 HashMap은 아주 오래전부터 있던 API이다. 자바8까지 오면서 많은 변화가 있었겠지만 필자는 java8 기준으로 살펴보도록 한다. 참고로 이 글은 http://d2.naver.com/helloworld/831311 참고하면서 정리하는 의미로 남기는 것이다. 수학적인 의미 map map (mapping)은 원래 수학 함수에서 대응 관계를 지칭하는 용어이다. HashMap은 키 집합인 정의역과 값 집합인 공역의 대응에 해시 함수를 이용한다. 위의 링크의 (그림 1) HashMap과 Hashcode HashMap은 빠르다. 내부적으로 배열은 사용해 빠른 속도를 지니고 있다. 배열을 사용해 인덱스를 접근하므로 시간복잡도는 O(1..
-
개방 폐쇄 원칙카테고리 없음 2023. 4. 22. 14:39
오늘은 저번시간에 이어 개방 폐쇄 원칙(Open-clased principle) 대해서 알아보도록 하자. 예제를 고민하느라 책도 많이 참고 했고 인터넷 정보도 많이 활용했다. 계속 이 원칙들을 살펴봐야 되는데 중간중간에 다른 포스팅을 하느라 저번 포스팅이 어디있는지도 모르겠다. 오늘도 역시 단일책임원칙은 못한다. 개방 폐쇄 원칙 (OCP) 조금 모순이 있는 단어같다. 개방과 폐쇄가 공존한다. 하지만 여기에는 깊은 뜻이다. 일단 개방 폐쇄 원칙이 무엇인지 살펴보자. 개방 폐쇄 원칙이란 (OCP) 확장에는 열려 있어야 하고, 변경에는 닫혀있어야 한다. 라고 정의 되어있다. 흠.. 무슨 이런 어이 없는 말을 할까하는데 좀 더 풀어서 이야기 하면 다음과 같다. 기능을 변경 또는 확장할 수 있으면서 그 기능을 사..