반응형 IT/Java394 Maven 사용법 이전 포스팅에서 maven과 gradle 에 대해서 다룬적이 있다. 참고 포스팅에 참고해보길 바란다. 이번 포스팅에서는 나는 메이븐을 좀더 주로 다루기에 메이븐에 대해서 얘기를 해보려고 한다. maven은 다양한 종속성(dependency)를 pom.xml 에 추가를 하곤 한다. plugin 을 다루기도 하고, groupId, articleId, version ... 등을 지정해주는 dependency를 다루기도 한다. 이 dependency 는 메이븐 생태계에서 다양한 라이브러리를 가져올수 있는데 라이브러리 확인은 메이븐 공식 홈페이지에서 검색을 해서 가져올수 있다. 이전 릴리즈부터 현재 최신 버전까지 함께 가져올수있다. 아래 사이트이다. https://mvnrepository.com/ maven에는 .. 2022. 10. 5. HashTable, HashMap, ConcurrentHashMap 비교 이전 포스팅에서 Map에 대해서 다룬적은 있다.자세한 내용은 아래 참고 포스팅을 확인해보길 추천한다. 이번 포스팅에서는 Hash 관련해서 HashTable, HashMap, ConcurrentHashMap 세개를 얘기해볼 것이다. 먼저 셋의 공통점은 Map 인터페이스를 구현한 콜렉션들이고, 이 콜렉션들은 비슷한 역할을 하는것 같으면서도 다르게 구현되어 있다.기본적으로 Map 인터페이스를 구축한다면 Key/Value 구조를 갖게 된다. HashTableHashTable은 put,get 과 같은 주요 메서드에 synchronized 키워드가 선언되어 있고, KeyValue에 null을 허용하지 않는다.HashMapHashMap은 주요 메서드에 synchronized 키워드가 포함되어있지 않으며, KeyVal.. 2022. 10. 4. Quartz 스케줄러 part.2 저번 포스팅에 이어 코드를 다뤄볼 것이다. 일단 먼저 메인 함수를 작성할 jobexecutor를 만들어야한다. @PersistJobDataAfterExecution @DisallowConcurrentExecution public class SampleJobExecutor implements Job{ private static final SimpleDateFormat TIMESTAMP_FMT = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSSS"); public static final String EXECUTION_COUNT = "EXECUTION_COUNT"; @Override public void execute(JobExecutionContext ctx) throws .. 2022. 10. 3. Quartz 스케줄러 part.1 이전 포스팅에서 스프링 스케줄러 관련해서 다룬적이 있다. 아래 참고 포스팅을 확인해보면 도움이 될것이다. 이번 포스팅에서는 스케줄러를 담당하는 자바 라이브러리인 QUARTZ 를 다뤄볼것이다. 라이브러리를 사용하기 위한 메이븐 dependency 는 다음과 같다. org.quartz-scheduler quartz 2.3.2 구성 요소는 다음과 같다. JOB 실제 작업을 수행하는 객체 org.quartz.Job 인터페이스를 상속받아 execute 메소드에 수행 로직을 구현 같은 그룹에는 동일한 이름을 가진 Job를 생성할수 없음 Trigger Job을 수행하기 위한조건(스케줄)을 정의한 객체 특정 시간, 횟수, 반복 주기 등을 설정할 수 있음 특정시간 및 횟수 : SimpleTrigger 주기적으로 반복 :.. 2022. 10. 2. PSA 란? 자바 spring에서는 몇 가지 특성이 있다. 이전에 포스팅에서 다뤄본적이 있는데 한 가지가 빠져 있어서 그 부분에 대해서 설명을 해보려고 한다. (아래 참고 포스팅 참조) 주제는 PSA 이다. 스프링은 아래 사진이 유명한데 삼각형으로 만들어진 이 그림을 본 적이 있는 분들이 있을 것이다. AOP, DI/IoC 와 어깨를 나란히 하고 있는 이 PSA란 무엇일까? PSA란 환경의 변화와 관계없이 일관된 방식의 기술로의 접근 환경을 제공하는 추상화 구조를 말한다. 이는 POJO 원칙을 철저히 따른 Spring의 기능으로 Spring에서 동작할 수 있는Library들은 POJO원칙을 지키게끔 PSA형태의 추상화가 되어있음을 의미한다. "잘 만든 인터페이스 하나가 열 클래스 부럽지 않다" PSA = 잘 만든 인.. 2022. 9. 28. Assertions.assertThat 비교 하기 이전 포스팅에서 테스트를 할 경우에는 Junit Test를 사용하기 위해 다룬 글이 있다. 아래 참고 포스팅을 확인해보자. 만약에 service에서 두 객체나 변수 등을 비교 하기 위해서는 다양한 방법이 있지만 결국 확인을 하기 위해서는 System.out.println 으로 보게 될것이다. 일반 코드도 그렇고 테스트 코드에서도 이렇게 작성을 한다면 직접 콘솔을 뒤져가면서 눈으로 확인을 해야한다. 이럴 경우에 비교를 하는 대상을 테스트 코드에 한줄만 추가해두면 된다. Assertions.assertThat("A").isEqualTo("Ad"); 이렇게 해두면 테스트 코드를 돌릴때 두개의 변수 혹은 객체 등 같으면 정상 success가 뜨고 다르다면 빨간색으로 fail이 날것이다. 위에 예제는 A랑 Ad는.. 2022. 9. 24. enum 이란 자바를 사용하다보면 interface나 class 등은 많이 사용하는데 이 enum 이라는 친구는 생소할수도 있다. 열거형이라고도 하는데 이 enum 이라는것을 오늘 다뤄볼 것이다. 아시는 분들은 아시겠지만 상수 정의하는 방법이다. 기존 클래스에서는 상수를 static final String name = "A"; 이런식으로 정의를 했다면 enum에서는 좀 다르다. 코드를 직접 한번 보면 이해할수 있을것이다. public class EnumExample { public static final String MALE = "MALE"; public static final String FEMALE = "FEMALE"; public static void main(String[] args) { String gende.. 2022. 9. 17. Spring REST Docs 데이터베이스와 통신하는 방식 중에 하나로 REST 통신이 있다. REST통신에 대해서는 아래 참고 포스팅을 확인해보면 도움이 될것이다. REST 를 활용하여 api 를 만들게 된다. 그러면서 정리 문서를 만들어야 하는 때가 온다. 얼마전 포스팅에서 문서화 관련 javadoc 관련 포스팅을 작성하기도 하였고, 참고 포스팅을 확인해보도록 한다. 하지만 해당 javadoc 은 주석 기반으로 문서를 만들어주는것이고 오늘 소개할 REST Docs 의 특징은 아래와 같다. 테스트 코드 기반으로 Restful API 문서를 돕는 도구 Asciidoctor를 이용해서 HTML 등등 다양한 포맷으로 문서를 자동으로 출력할 수 있음 RestDocs의 가장 큰 장점은 테스트 코드 기반으로 문서를 작성하는 점 API Spec.. 2022. 9. 9. Spring Bean 등록(@Bean은 @Configuration 내에) 이전 포스팅에서 스프링에서 DI 와 IoC를 사용하기 위해서는 스프링에 Bean을 등록해줘야하고 그에 대한 내용은 아래 참고포스팅에서 알아볼수 있다. 하지만 스프링을 다루기 위해서는 가장 중요한 부분이라서 다시 한번 정리를 할겸 포스팅을 또 한번 다뤄보게 되었다. 수동으로 등록을 할수도 있고, 자동으로 등록해줄수 있다. 수동 방법은 다음과 같다. @Configuration public class ResourceConfig { @Bean public class classname() { return new NiceResource(); } } 이렇게 @Bean을 통해서 수동으로 넣어줄수 있고, Bean이 있는 class에는 Configuration annotation을 달아줘야한다. 물론 Configurati.. 2022. 9. 5. 이전 1 ··· 32 33 34 35 36 37 38 ··· 44 다음 반응형