본문 바로가기

Computer Science/Spring

(9)
[Spring] Optional 객체 여부에 따른 map 사용법 1)객체가 Optional 객체인 경우 - JPA를 활용하면 단일 객체 리턴에 대해서는 모두 Optional 객체로 반환한다. ( ※ 참고로 JPA 에서 List 로 리턴할 때는, List 가 비어있으면 Optional 객체가 아닌 Null로 리턴한다.) - 따라서 아래 mailRepository.findById 는 Optional 객체를 리턴하며 따로 Optional.of 나 Optional.ofNullable 를 활용할 필요는 없다. Mail mail = this.mailRepository.findById(mailRequestDTO.getId().longValue()) .map(m -> { Mail newMail; newMail = m; // ... Setting ... // return newMai..
[Spring] Get 호출시 response 에 한글 깨짐 현상 Spring boot GET 으로 호출시 response 값에 들어있는 한글이 깨지는 현상이 발생했었다. 아래와 같이 response 로 받은 값을 UTF-8로 인코딩을 해서 사용하니 문제가 해결되었다. 참고) httpGetConnection 은 내가 만든 메소드 이름이다. HttpResponse response = httpGetConnection("http://{URL}"); HttpEntity entity= response.getEntity(); String result = EntityUtils.toString(entity, "UTF-8");
[Spring] LZ4 압축 및 압축 해제 (FILE) LZ4 압축 및 압축해제 in JAVA import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import org.apache.commons.codec.binary.Base64; import net.jpountz.lz4.LZ4FrameInputStream; import net.jpountz.lz4.LZ4FrameOutputStream; public class Lz4Compress { public static final int DEFAULT_BUFFER_SIZE = 8192; public static final int EOF = ..
[Spring] AOP 패러다임 1. AOP AOP는 흔히 '관점 지향 프로그래밍'이라는 용어로 번역되는데, 이때 '관점(Aspect)'이라는 용어가 너무 어렵습니다. 개발자들에게 '관점'이란 용어는 관심사(Concern)이라고 번역이 되는데 개발 시 필요한 고민이나 염두에 두어야 하는 일이라고 생각할 수 있습니다. 1. 파라미터가 올바르게 들어왔을까? 2. 이 작업을 하는 사용자가 적절한 권한을 가진 사용자인가? 3. 이 작업에서 발생할 수 있는 모든 예외는 어떻게 처리해야 하는가? 등이 있을 수 있습니다. 핵심 로직은 아니더라도 전통적으로 개발자가 개발하면서 반복적으로 이러한 문제를 코드에 담아내게 됩니다. 하지만 AOP는 좀 다른 방식으로 접근합니다. '관심사의 분리(seperate concerns)'입니다. AOP 는 개발자가 ..
[Spring] Mysql / MyBatis insert 쿼리 수행하면서 PK 가져오기 Spring 에서 Mysql을 사용할 때 데이터를 insert 함과 동시에 Auto Increment 로 증가하는 PK값을 받아오고 싶었다. PK 는 유일했기 때문에 데이터를 insert 한 후에 select문을 실행해서 가져온다고 하더라도 정확한 데이터 값을 가져올 수 없었다. parameterType 을 본인이 사용하는 DataClass로 지정하고, insert 속성중 하나인 useGeneratedKeys 를 true 로 바꾼다 (기본값 = "false") : 자동생성키그리고 keyProperty를 DB에 Auto Increment 가 지정되어 있는 Column 명으로 지정하면 사용하는 DataClass 필드에 자동으로 저장된다.
[Spring] Spring project log4j 충돌 현상 Log4j 2 를 설치하고 나서 @Log4j 를 썼을 때 오류가 났다... 갑자기 난 오류라 많이 당황해서 여러 검색도 해봤지만 정말 힘들게 찾아서 해결했다. log4j 1.2 xx 버전은 더 이상 사용하지 않는 버전이라고 한다. 그래서 pom.xml 페이지에 있는 dependency의 scope를 provided 로 바꿔주자 해결되었다. 참고링크 : http://logging.apache.org/log4j/2.x/faq.html#which_jars
[Spring] 스프링 MVC 프로젝트 로딩 구조 스프링 프로젝트 구동 시 관여하는 XML 은 web.xml, root-context.xml, servlet-context.xml 입니다. 이중 web.xml 은 Tomcat 구동 관련 설정이고, 나머지 두 파일은 스프링 관련 설정입니다. 프로젝트 구동은 web.xml 에서 시작합니다. web.xml 파일 맨 위 에는 root-context.xml 의 경로가 설정되어 있고, 에는 스프링 MVC의 ContextLoaderListener 가 등록되어 있습니다. ContextLoaderListener 는 해당 웹 애플리케이션 구동 시 같이 동작하므로 해당 프로젝트를 실행하면 로그를 먼저 출력하며 기록됩니다. ContextLoaderListener가 root-context.xml 을 처리하면 파일안에 있는 빈(b..
[Spring]스프링 프로젝트 파일의 구조 ◎ 스프링 프로젝트의 구조 기본 파일 구조를 알아보겠습니다! 위의 2가지 빨간색 네모 박스의 파일이 스프링 프로젝트를 진행할 때 사용하는 파일들 입니다. src/main/java : 작성되는 코드의 경로src/main/resources : 실행할 때 참고하는 기본 경로(주로 설정 파일들을 넣는다.)src/test/java : 테스트 코드를 넣는 경로src/test/resources : 테스트 관련 설정 파일 보관 경로 servlet-context.xml : 웹과 관련된 스프링 설정 파일root-context.xml : 스프링 설정 파일views 폴더 : 템플릿 프로젝트의 jsp 파일 경로web.xml : Tomcat의 web.xml 파일pom.xml : Maven이 사용하는 pom.xml