분류 전체보기 87

[Spring] 데이터 바인딩 추상화 - Converter, Formatter

Converter, Formatter 1. Converter 인터페이스 Converter 인터페이스 API Converter 특징 Spring 3.0 부터 생성되었다 S 타입을 T 타입으로 변환할 수 있는 매우 일반적인 변환기이다 Spring이 제공하는 ConversionService 인터페이스를 통해 사용된다. 상태정보(값)을 저장하지 않으므로 Thread-safe하다 멀티 쓰레드에 안전하고 값이 일치하고 원하는 값이 나온다. Bean으로 등록해서 사용이 가능하다 PropertyEditor의 단점을 보완하기 위해 생겼다. 1) Converter 구현 예제 import org.springframework.core.convert.converter.Converter; public class EventConv..

Spring/Spring Core 2020.11.05

[Spring] 데이터 바인딩 추상화 - PropertyEditor

데이터 바인딩 추상화 - PropertyEditor spring이 제공해주는 org.springframework.validation.DataBinder 1. Data Binding이란? 기술적인 관점으로 보았을 때는 프로퍼티 값을 타겟 객체에 설정하는 기능이다 사용자 관점으로 보았을 때는 사용자 입력값을 애플리케이션 도메인 모델에 동적으로 변환해 넣어 주는 기능이다. 예를 들면 입력값은 대부분 String(문자열) 인데, 그 값을 도메인 객체가 가지고 있는 자료형 (int, boolean, long, Date ) 등 Event, Book 같은 도메인 타입으로 변환해서 넣어주는 기능이다. 즉 사용자가 입력한 문자열 값을 도메인 타입에 맞춰 변환하여 사용 하는 것을 데이터 바인딩 이라고 합니다 2. Spri..

Spring/Spring Core 2020.11.05

[Spring] Validation 추상화

Validation 추상화 Spring에서 org.springframework.validation.Validator는 애플리케이션에서 사용하는 객체 검증용 인터페이스이다. 주로 Spring MVC에서 사용하지만 Web 계층에서만 사용하는 전용 개념은 아니다. 특징 어떠한 Layer이여도 상관이 없고 모든 Layer(Web, Service , Data) 에서 사용해도 상관없다. 구현체 중 하나이면서 JSR-303(Bean Validation 1.0)과 JSR-349(Bean Validation 1.1), JSR-380(BeanValidation 2.0.1 )을 지원한다. (LocalValidatorFactoryBean) 참고 https://beanvalidation.org/ DataBinder에 들어가서 ..

Spring/Spring Core 2020.11.04

[Spring] Resource 추상화

Resource 추상화 Spring Boot에서 resource를 설정할때 classpath로 mapping시 prefix 사용을 선호한다. java.net.URL 을 Resource로 감싸서 추상화 하는 기법을 기술한다 특징 Spring은 java.net.URL 을 org.springframework.core.io.Resource 로 감싸서 추상화한 클래스이다. 스프링 내부에서 많이 사용하는 인터페이스이다 추상화 한 이유 java.net.URL 이 기본적으로 여러 prefix를 지원하는 프로토콜은 http,https, ftp, file, jar 이지만 classpath 기준으로 리소스를 읽어오는 기능이 없다. ServletContext를 기준으로 상대 경로로 읽어오는 기능이 없다 새로운 핸들러를 등록하..

Spring/Spring Core 2020.11.04

[Java] Java 8에 추가된 LocalDate, LocalTime, LocalDateTime

Java 8에 추가된 LocalDate,LocalTime,LocalDateTime 이전 포스팅에 이어 포스팅하겠습니다. 2020/11/02 - [Java/개념] - Java 에서 Date, Calendar클래스가 왜 Deprecated됐는지? 이번 포스팅은 java.time 패키지의 LocalDate,LocalTime,LocalDateTime 에 대해 알아보겠습니다. Java의 Time API 흐름 Date(jdk 1.0) → Calendar(jdk.1.1) → java.time(jdk 1.8) LocalDate,LocalTime,LocalDateTime 클래스들의 공통점 TimeZone 개념을 가지고 있지 않기 때문에 TimeZone에 따라 시간 변환이 불가능합니다. java.time 패키지 이와같이 ..

Java/개념 2020.11.02

[Java] Date, Calendar클래스가 왜 Deprecated됐는지?

Java 에서 Date클래스와 Calendar 클래스가 왜 Deprecated 됐는지? 앞 전 포스팅으로 이어서 포스팅하겠습니다. 2020/11/02 - [Java/개념] - Java Date와 Calendar 클래스 국제화와 잘 맞지 않는다 java.util.Date 클래스는 실제로 더 이상 사용되지 않으며, 생성자와 다른 생성자/메소드도 더 이상 사용되지 않는다. 그것은 국제화와 잘 맞지 않기 때문에 더 이상 사용되지 않았다. Calendar클래스는 대신 다음과 같이 사용해야한다. Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 1988); cal.set(Calendar.MONTH, Calendar.JANUARY); cal.set(Cale..

Java/개념 2020.11.02

[Java] Date와 Calendar 클래스

Date와 Calendar 클래스 JDK 1.0 버전에서는 날짜를 처리하기 위해 Date 클래스를 사용했다. JDK 1.1 버전부터는 Calendar 클래스를 사용하여 날짜 처리 작업을 하도록 변경되었다. Date 클래스의 대부분 메소드들 deprecated 되었다. 현재 Date클래스의 생성자는 두 개만 사용이 가능하고 나머지는 deprecated 되었다. 먼저 Date 클래스의 생성자를 알아보자 Date 클래스의 생성자 생성자 설명 Date() 객체가 생성된 시간을 갖는 Date 객체를 생성 Date(long date) 매개 변수로 넘어온 long 타입을 갖는 Date 객체를 생성 Date(long date) 중 long date 값은 UTC 시간으로 현재 시간을 long 타입으로 리턴해주는 Syst..

Java/개념 2020.11.02