본문 바로가기

Java

(41)
Validation 스프링 어플리케이션에서 사용하는 검증을 위한 인터페이스입니다. NotEmpty, NotNull, Email등 Bean을 검증하는 기능입니다. 그럼 Event 클래스와 해당 클래스의 에러를 처리하는 Validator 클래스를 만들어보겠습니다. Validator 를 구현한 클래스는 2가지 메소드를 오버라이드해줘야합니다. 이렇게 Validator를 구현하여 사용할 수 있습니다. 하지만, Spring 에서는 LocalValidatorFactoryBean을 자동으로 등록해줍니다. 수행하는 방법은 @NotEmpty, @Min, @Email 등의 어노테이션을 붙여주는 것입니다. 아래 Event 클래스를 봐주세요 이렇게 어노테이션을 붙여둔 후에 Validator를 이용하여 확인해보면 (limit은 0이최소값인데 -1 ..
Resource 스프링에서는 Resource 를 추상화하였습니다. 즉, java.net.URL 을 추상화했습니다. 이렇게 추상화를 한 이유는 java.net.URL이 기존에는 classpath를 기준으로 resource 를 가져오는 기능이 없었습니다. 이전 포스팅에서 설명한 ReourceLoader 를 이용해서 resource 를 가져와야했습니다. 이런 방법을 통일시켰습니다. ApplicationContext를 생성할때 ClassPathXmlApplicationContext() 의 parameter가 내부적으로 resource 로 추상화됩니다. 내부에서는 resource 가 사용되고 있습니다. classpath 기준으로 parameter의 파일을 찾는 것입니다. 그 외에도 FileSystemXmlApplicationCo..
MessageSource ApplicationContext 가 상속받고 있는 인터페이스인 MessageSource 는 국제화 기능과 관련된 기능입니다. 즉, 메시지를 다국화하는 기능을 가지고 있습니다. MessageSource 에 있는 getMessage 메소드를 이용하기 위해서 resource 하단에 아래와 같은 파일을 추가해줍니다. 이 파일들은 MessageSource 가 읽어냅니다. 이렇게 getMessage 에 첫번째 파라미터로 입력한 첫번째 값을 두고 뒤에 필요한 부분을 배치하면 됩니다.
CORS Cross-Origin Resource Sharing 이란 다른 출처의 자원을 공유할 수 있도록 설정하는 권한 체제입니다. Same Origin 이란 Same Origin이란 Sheme, Host, Port 넘버를 체크하여 이가 일치하는것을 의미합니다. Same Origin이 아닐경우 정보 접근에 제한을 두는 것을 SOP(Same Origin Policy)라 합니다. 현상 Angular 와 Spring boot로 개발하던 도중 아래와 같은 에러가 발생하였습니다. 이를 해결하는 방법을 살펴보겠습니다. 1. Spring에서 CORS는 HTTP Header를 통해 요청하는 도메인의 출처를 확인하고 허용하는 방식으로 진행합니다. 이때 설정해야하는 부분은 크게 두부분입니다. 1) WebSecurityConfigu..
equals, hashCode java 에서 동등 비교를 할때 == 이나 equals 를 사용합니다. override 하지 않고 사용한 equals 는 ==과 동일한 역할을 수행합니다. 즉, 주소값을 비교하게 됩니다. 이는 Object 클래스의 equals를 보시면 알 수 있습니다. 따라서 객체의 내용이 같은지 비교하기 위해선 equals를 override하여 재정의해줍니다. equals를 사용하려면 반드시 hashCode()를 함께 Override하여야 합니다. equals만 사용해서 두객체를 같다고 정의해두어도 Collection 계열의 객체에선 같다고 판단하지 않기 때문입니다. HashSet, HashMap과 같은 Collection 계열에서는 hash를 사용하여 동등비교를 수행합니다. equals 와 hashCode를 사용할 ..
Refresh Token Access Token은 일반적으로 유효기간이 있습니다. 유효기간이 만료되게 되면 사용자는 새로운 인증과정을 거쳐야하는 불편함이 있습니다. 이럴때 사용하는것이 'Refresh Token' 입니다. 이에 대한 표준 문서는 아래와 같습니다. tools.ietf.org/html/rfc6749 RFC 6749 - The OAuth 2.0 Authorization Framework [Docs] [txt|pdf] [draft-ietf-oaut...] [Tracker] [Diff1] [Diff2] [IPR] [Errata] Updated by: 8252 PROPOSED STANDARD Errata Exist Internet Engineering Task Force (IETF) D. Hardt, Ed. Request ..
Optional Java 8버전에서 도입된 Optional에 대해 살펴보겠습니다. 공식 문서에 따르면 반환값이 '없음'을 나타내는 것이 주목적인 라이브러리입니다. orElse() 또한 orElseThrow() 를 사용하여 객체에 값이 없을 경우 이를 처리해주는 방식으로 사용해야합니다. Optional은 필드에 사용할 목적으로 만들어진 것이 아니기 때문에 Optional은 필드로 사용하지 않아야 합니다. orElse Optional 객체가 비어있는 것과 무관하게 반드시 실행됩니다. orElseGet Optional 객체가 비어있으면 실행합니다. 기본 값을 주고자 할 때 사용합니다. orElseThrow Optional 객체가 비어있다면 예외를 던집니다. Java8에서는 매개변수가 필요했지만 Java10에서는 매개변수가 필..
Mapper, Dependency Maven Dependency 에 대해 작성해보겠습니다. mvnrepository.com/ Maven Repository: Search/Browse/Explore The JWebSwing implementation for Angular Pretty Checkboxes Last Release on Nov 2, 2020 mvnrepository.com modelMapper 는 도메인 값과 DTO의 mapping을 자동으로 해주는 역할입니다. 1. Mapper mapstruct.org/ MapStruct – Java bean mappings, the easy way! Java bean mappings, the easy way! Get started Download mapstruct.org 기존에는 JPA En..