전체 글
-
Spring Validator (JSR 303)카테고리 없음 2023. 4. 21. 15:27
Spring validate에 대해 알아보자. 유효성 검사를 하기 위해 Spring은 org.springframework.validation.Validator 인터페이스를 제공하고 있다. Spring reference에도 잘 나와 있다. 설명이 부족한게 있다면 레퍼런스를... @Data public class Customer { private String name; private int age; private String mobilePhone; } 이런 도메인이 있다고 가정하자. 이 중에 name은 빈값이 아니어야 하며 age 일 경우에는 0보다는 커야하며 150보다는 작아야 된다고 가정하자. 그럼 우리는 Validator 인터페이스를 활용하여 유효성 검증을 할 수 있다. @Component public..
-
spring ApplicationEvent카테고리 없음 2023. 4. 21. 15:27
예전에 조금 포스팅하다가 임시글로 저장만 하고 까먹은 글이 있었다. 그게 지금 말할려는 ApplicationEvent이다. Spring에는 ApplicationContext를 활용해서 Event를 발생 시킬수 있다. ApplicationEvent를 구현하기 위해서는 세가지만 알면 된다. 1. 이벤트 발신자 : 말그대로 이벤트를 발생시킨다. ApplicationEventPublisher 인터페이스 혹은 ApplicatonContext의 publishEvent를 활용해서 이벤트를 발생시킨다. (ApplicationContext는 ApplicationEventPublisher 상속받고 있다.) 2. 이벤트 수신자 : 이거 또한 이벤트를 수신한다. ApplicationListener 인터페이스를 통해 이벤트를 ..
-
머신러닝? weka카테고리 없음 2023. 4. 21. 15:26
몇 달전에 알파고가 나오면서 머신러닝이 다시 한번 주목 받았다. 머신러닝에 대해 잘 모르지만 또한 이쪽 분야가 아니라.. 간단한 툴로 머신러닝의 기초를 알아보겠다. 아주 쉽게 설치 할 수 있는 툴이 있는데 그 툴은 weka 라는 툴이다. weka 는 데이터 마이닝 프로그램이다. 집에서도 빠르게 할 수 있으니 관심있는 사람은 설치를 해보자. 여기서 다운 받을 수 있고 맥 윈도우 둘다 지원한다. 실행을 시키면 아래와 같은 화면이 나온다. 그리고 데이터를 가져와야 하기 때문에 proprocess 탭에 open URL을 눌러 아래의 링크를 넣는다. http://condor.depaul.edu/ntomuro/courses/578/assign/hw1files/tic-tac-toe.arff 다들 아시다시피 tic t..
-
java bytecode카테고리 없음 2023. 4. 21. 15:26
오늘은 java 바이트코드에 대해서 잠깐 살펴보자. 우리는 거의 바이트코드를 볼일이 없다. 바이트코드 레벨까지 내려갈 필요가 없기에 딱히 볼일이 없다. 바이트코드를 상세하게 볼건 없고 그냥 한번 보고 넘어가자. package me.wonwoo; public class ApplicationTest { public static void main(String[] args) { String str = "wonwoo"; System.out.println(str); } } 이런 클래스가 있다고 가정할 때 바이트 코드는 어떻게 나오는지 보자. 인텔리j에서는 컨트롤+쉬프트+a를 눌러 show bytecode 맥 경우에는 커멘드 + 쉬프트 + a 에서 show bytecode를 누르면 된다. 참고로 컴파일을 해야 보인다..
-
Spring @Configuration 상속과 @Import카테고리 없음 2023. 4. 21. 15:26
오늘 퇴근전에 팀장님이 @Configuration 관련해서 물어봤다. 일단 될거라고는 했지만 그 보다 더 생각난게 @Import라는 어노테이션이다. 물론 그때는 있다는걸 알고만 있었지 확실하게 아는게 아니여서... Import를 알아보기전에 상속에 대해 보자. public class SuperConfig { @Bean public String hello(){ return "hello"; } } @Configuration public class ChildConfig extends SuperConfig { @Bean public String world() { return "world"; } } 위와 같은 설정 정보가 있다고 가정하자. SuperConfig에는 @Configuration이 없지만 어차피 인스턴..
-
junit5 맛만 보기카테고리 없음 2023. 4. 21. 15:26
junit5가 아직 릴리즈는 안되었지만 조만간 될듯 싶다. 그래서 중요 내용보다는 바뀐 부분을 살짝 알아보자. 일단 패키지명이 바뀌었다. 또한 메이븐의 GroupId와 ArtifactID도 바뀌었다. 문서를 보면 더 자세히 알 수 있다. org.junit.jupiter junit-jupiter-engine ${junit.jupiter.version} test org.junit.vintage junit-vintage-engine ${junit.vintage.version} test junit5만 쓴다면 위에 jupiter만 쓰면 되는데 필자는 테스트를 위해 vintage까지 넣었다. vintage는 기존의 junit4가 포함되어 있다. 아직 상세하기 보진 않아서 그런것만 같다. public class Ju..
-
Spring Boot 1.4 Test카테고리 없음 2023. 4. 21. 15:26
이번 시간에는 Spring Boot 1.4부터 추가된 Test를 알아보자 Spring Boot 1.3 에서는 이런 어노테이션을 붙어서 테스트를 진행했다. @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = Application.class) @WebAppConfiguration public class SimpleTestCase { } 하지만 1.4.부터는 좀더 심플하게 바뀌었다. @RunWith(SpringRunner.class) @SpringBootTest public class SimpleTestCase{ } 좀더 간판해졌다는걸 알수 있다. 1.4 부터 추가된 @MockBean 이라는 어노테이션이 있다. 가짜..
-
Spring Jpa java8 date (LocalDateTime) 와 Jackson카테고리 없음 2023. 4. 21. 15:26
제목이 거창하지만 별거 없다. Spring data jpa와 java8에 추가된 LocalDateTime 설정과 그에 맞게 json으로 보낼 Jackson 설정을 알아볼 예정이다. 현재 JPA2.1은 java8의 date(LocalDateTime) 를 지원하지 않는다. 아마도 java8이 릴리즈 되기 전에 JPA2.1이 먼저 나와서 일것이다. java8 이전의 Date API는 엉망진창이다.(물론 내가 잘만드는건 아니지만..) thread-safe 하지도 않고 API가 직관적이지도 않다. 그래서 우리는 Third-party 라이브러리인 Joda-time을 많이 쓰곤했다. 하지만 java8에 추가된 date는 Joda-time의 저자와 오라클 주도하에 JSR310 표준에 맞춰 개발 하였다. 아무튼 이걸 말..