2020/03/25 - [프로그래밍 노트/SPRING] - [Spring] 데이터 바인딩 - PropertyEditor Converter S타입을 T타입으로 변환할 수 있는 매우 일반적인 변환기 상태 정보 없음 == Stateless == 쓰레드 세이프 ConverterRegistry에 등록해서 사용 public class EventConverter { // Converter 인터페이스를 구현 (Source -> Target 변환) public static class StringToEventConverter implements Converter { @Override public Event convert(String str) { return new Event(Integer.parseInt(str)); } ..
분류 전체보기
org.springframework.validation.DataBinder 기술적인 관점 : 프로퍼티 값을 타겟 객체에 설정하는 기능 사용자 관점 : 사용자 입력값을 애플리케이션 도메인 모델에 동적으로 변환해 넣어주는 기능 입력값은 대부분 "문자열"인데, 그 값을 객체가 가지고 있는 int, long, Boolean, Date 등 심지어 Event, Block 같은 도메인 타입으로도 변환해서 넣어주는 기능 PropertyEditor 스프링 3.0 이전까지 DataBinder가 변환 작업 사용하던 인터페이스 쓰레드-세이프 하지 않음(상태 정보 저장 하고 있음, 따라서 싱글톤 빈으로 등록해서 쓰면... gg) Object와 String간의 변환만 할 수 있어, 사용 범위가 제한적 임 고전적인 데이터 바인딩 ..
org.springframework.validation.Validator 애플리케이션에서 사용하는 객체 검증용 인터페이스 특징 어떠한 계층과도 관계가 없다 ⇒ 모든 계층(웹, 서비스, 데이터)에서 사용해도 좋다. 구현체 중 하나로, JSR-303(Bean Validation 1.0)과 JSR-349(Bean Validation1.1)을 지원한다. (LocalValidatorFactoryBean) DataBinder에 들어가 바인딩 할 때 같이 사용되기도 한다. 인터페이스 boolean support(Class clazz) : 어떤 타입의 객체를 검증할 때 사용할 것인지 결정함 void validate(Object obj, Error e) : 실제 검증 로직을 이 안에서 구현 구현할 때 Validation..
ResourceLoader 리소스를 읽어오는 기능을 제공하는 인터페이스로, applicationContext가 상속받고 있다. public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver { ... } public interface ResourcePatternResolver extends ResourceLoader { String CLASSPATH_ALL_URL_PREFIX = "classpath*:"; Resource[] getResources(Stri..
MessageSource란 국제화(i18n)기능을 제공하는 인터페이스이다. public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver { ... } ApplicationContext가 MessageSource를 구현한 것을 볼 수 있다. 즉, ApplicationContext는 MessageSource기능을 사용할 수 있다. ApplicacionContext extends MessageSource getMessage(String code, Object[..
요즘 트렌드는 프론트/백엔드의 분리이다. 그러다보니 사용자에게 페이지를 제공할 때, 서버렌더링 방식이아닌 클라이언트 렌더링(브라우저에서 화면을 그림)방식을 많이 사용하게 된다. 나는 백엔드 개발자이긴 하지만, 프론트개발관련해서 웹애플리케이션이 브라우저에서 어떻게 동작하고 최적화 방법에 대해 공부가 필요해서 해당 내용을 정리하게 되었다. 참고한 책은 https://book.naver.com/bookdb/book_detail.nhn?bid=4587095 (웹 사이트 최적화 기법) 이며, 필요하다고 생각한 내용들만 적을 생각이다! 현실적으로 대부분의 웹 페이지는 최종 사용자의 반응 시간(브라우저 반응 시간) 중 HTML문서를 웹 서버로부터 다운로드 받는 데 소요되는 시간이 10~20%도 채 되지 않는다. ⇒ ..
ApplicationContext는 프로파일과 프로퍼티를 다루는 EnvironmentCapable을 구현하여 사용한다. ApplicationContext extends EnvironmentCapable ... getEnvironment() 프로파일은 빈들의 그룹이라고 생각하면 된다. Environment의 역할은 활성화할 프로파일을 확인 및 설정. 만약에 테스트시에만 필요한 빈들이 있다면 프프로파일(테스트)을 정의하여, 사용하면 된다. 프로파일 정의하기 // 이 자바 config는 Test할때 사용할 꺼야. // Test할때는 TestBookRepository가 필요하거든... @Configuration @Profile("test") public class TestConfiguration { @Bean ..
RSA 알고리즘을 이용하면 공개키/개인키 쌍이 생성된다. 우리는 암호화 통신을 이용하여 통신할 때 공새키를 사용자들에게 공개하게 되는데, 이 공개키가 해당 도메인(ex naver.com)에서 발행한것에 대한 보징을 받기 위해 인증기관(CA)에 공개키를 등록하게 된다. 이는 마치 인감도감을 만들어서 동사무소에 인감을 등록하는 과정과 같은데, 인감도장의 내용을 동사무소에 등록하면 동수마소는 이것이 내가 발행한 인감이라는 것을 보증하여 준다. 공개키(인감도장, 인증서) / 인증기관(동사무소, CA) 여기서 인증기관(CA)은 나의 공개키(인증서)를 보증하기 위해서 서명을 하게 된다. 여기서 서명이란 나의 공개키의 해쉬된 값(SHA256)을 인증기관의 개인키로 암호화 한 결과값을 뜻한다. ⇒ 디지털 서명(Digi..
2020/03/10 - [그 외 ... (정리해야함)/꿀팁] - 인증서 해쉬와 디지털 서명(Hash and Digital Signing) Self Signed Certificate(SSC)란? 인증서(digital certificate) ⇒ 인증기관의 개인키로 인증서 소유자의 공개키를 전자서명한 데이터 모든 인증서는 발급기관(CA)가 있어야지만 최상위 인증기관(ROOT CA)는 서명해줄 상위 인증기관이 없으므로 개인키로 스스로의 인증서에 서명하여 최상위 인증기관 인증서를 만든다. 이렇게 스스로 서명한 ROOT CA 인증서를 Self Signed Certifiacte라고 한다. 브라우저에서는 유명한 ROOT CA들의 인증서를 신뢰하는 CA로 미리 등록해 놓기 때문에, 우리가 만든 인증서는 신뢰할 수 없는 ..
PEM 인코딩된 인증서 정보를 출력 $ openssl x509 -text -noout -in 인증서.pem DER 인코딩된 인증서 정보를 출력(-inform der 옵션 추가) $ openssl x509 -text -noout -in 인증서.der -inform der 인코딩 변환(DER -> PEM) $ openssl x509 -inform der -outform pem -in 인증서.der -out 인증서.pem