[JAVA] MultiValueMap에 대해
2022. 12. 5. 11:10
Computer Science/JAVA
map의 종류 HashMap TreeMap LinkedHashMap HashMap Map의 기본 형태 key:value 중복된 key 허용하지 않음 데이터를 뽑을 때 Key를 기준으로 가져옴 마치 Key를 인덱스처럼 가져와 value를 가져오기 때문에 시간복잡도 O(1) TreeMap HashMap + 추가 옵션 데이터가 들어올 때마다 Key 값에 따라 자동 정렬 됨 Comparator 사용 LinkedHashMap HashMap + 추가 옵션 입력순서를 보장한다. 예를 들어, HashMap에 A B C 라는 순서로 입력했을 때, 맵에 있는 모든 값을 출력할때 A B C 라는 순서로 출력한다는 보장이 없다. LinkedHashMap은 이러한 입력 순서를 보장한다. MultiValueMap Spring에서..
Spring 버전별 특징
2022. 8. 19. 16:37
Computer Science/Web programming
회사 멘토님이 Spring 버전별 차이를 알고 있는지, 그동안 어떤 버전을 써왔는지 물어보셨다. 생각 해보니 나는 어떤 버전의 Spring, Spring Boot를 쓰고 있고 버전별 차이점이 무엇인지에 대해 전혀 알지 못하고 있었다. 그래서 공부도 할겸 정리해보았다.Spring 2.xXML 네임스페이스와 AspectJ를 지원한다Spring 3.x 프레임워크 코드베이스 전반에 걸쳐 강력한 Java 5+ 기반과 Java 기반 @Configuration모델과 같은 기능을 도입한다 Bean을 XML 형태로 관리할 수 있다 RestTemplate을 지원한다 JavaConfig 프로젝트의 몇몇 핵심 기능을 스프링 프레임워크에 추가했다 이 말은 다음 어노테이션을 이제 어노테이션을 이용해 DI 를 지원한다는 것이다 @..
[Web] DTO와 VO의 차이
2021. 12. 17. 14:59
Computer Science/Web programming
스프링을 공부하면서 VO가 있다는 것은 알았지만, DTO만 사용했기 때문에 DTO와 VO의 차이가 무엇인지에 대해 궁금했다. 생각이 난 김에 DTO와 VO의 차이에 대해 간단히 알아보려고 한다. DTO와 VO를 혼용해서 쓰는 경우가 많다. → 왜? core J2EE Patterns이라는 책에서 데이터 전달용 객체를 VO로 정의하다가 TO (현재는 데이터를 의미하는 D를 붙여 DTO로 사용)로 바꾸었기 때문 DTO (Data Transfer Object) 데이터 전달용 계층 간 데이터 교환을 위해 사용하는 객체. DTO에 데이터를 담아 전달한다. 데이터를 담은 private변수들과 이 변수들을 조작할 수 있는 getter&setter 메서드로 구성되어 있다. -> 다른 로직들은 담고 있지 않다! 왜? 순수..
[Web] Spring의 AOP, Interceptor, Filter
2021. 12. 14. 18:06
Computer Science/Web programming
1. AOP (Aspect Oriented Programming) 관점 지향 프로그래밍 Spring에서 각각의 로직들은 비지니스 로직과 부가기능으로 구성된다. 어떤 로직을 기준으로 1) 핵심적인 관점 2) 부가적인 관점으로 관점을 나누어 각각을 모듈화 하겠다는 것! 핵심적인 관점 == 핵심 비지니스 로직 부가적인 관점 == 핵심 로직을 실행하기 위한 부가적인 기능들 (데이터베이스 연결, 로깅, 트랜잭션 처리, 데이터 보호를 위한 암호화, 일괄적인 예외 처리 등) 각각의 로직들에서 계속 반복되어 쓰여지는 코드들 == 흩어진 관심사 (= 횡단 관심사 / 주로 부가기능) 이러한 반복된 코드들을 모듈로 만들어 놓으면 개발 속도가 빨라지고, 유지보수성도 향상됨 이와 같이 흩어진 관심사들을 Aspect로 모듈화 하..