Back End/Spring Framework
-
[Spring] 트랜잭션에 대한 실험과 고찰 (Self-invocation, 프록시가 메서드를 실행하기까지의 과정)Back End/Spring Framework 2024. 12. 1. 21:36
[Spring] 예외 발생시 Spring DB 트랜잭션 롤백 안되는 경우배경지식Checked Exception 은 개발자가 인지한 예외라 약속한다.Unchecked Exception 은 개발자가 인지하지 못한 예외라 약속한다.try-catch 문에서 catch 된 Exception 은 개발자가 인지한 예외라 약속한다.스프developer-ping9.tistory.com Spring DB 트랜잭션의 롤백 유무에 대해 정리하다가 프록시 객체가 언제 생성되는지, 어떤 원리로 만들어지는지 고찰을 하기 위해 여러 실험을 진행해보았다. 다른 블로그 글을 읽어도 이해가 잘안되고, 블로그마다 말이 좀 다른게 있어 쉽게 믿을 수가 없었다. 무엇보다 제일 궁금했던 점은 프록시가 나의 서비스클래스를 상속받아서 만들어지는지,..
-
[Spring] 예외 발생시 Spring DB 트랜잭션 롤백 안되는 경우Back End/Spring Framework 2024. 11. 27. 18:44
배경지식Checked Exception 은 개발자가 인지한 예외라 약속한다.Unchecked Exception 은 개발자가 인지하지 못한 예외라 약속한다.try-catch 문에서 catch 된 Exception 은 개발자가 인지한 예외라 약속한다.스프링은 개발자가 인지한 예외에 대해서는 기본적으로 롤백을 진행하지 않는다.예외가 발생한 메서드의 Propagation 레벨이 Required(default) 가 아니면 부모트랜잭션은 롤백되지 않는다.프록시가 Self invocation 을 시도할 경우 경우에 따라 트랜잭션이 롤백되지 않을 수 있다. [Spring] 트랜잭션에 대한 실험과 고찰 (Self-invocation, 프록시가 메서드를 실행하기까지의 과정)[Spring] 예외 발생시 Spring DB 트..
-
[Spring Framework] QueryDsl 적용하기 (with Maven, IntelliJ) - 소스코드에 generated 폴더 없이 사용하기Back End/Spring Framework 2022. 8. 28. 22:32
pom.xml (Maven) 빌드파일에 QClass 들을 포함시킵니다. com.mysema.maven apt-maven-plugin 1.1.3 process target/generated-sources/java com.querydsl.apt.jpa.JPAAnnotationProcessor IntelliJ 빌드파일에 포함된 QClass 들을 소스코드에서 인식할 수 있게 합니다. 그리고 maven install 을 하고 작업하면 끝! 경로 : File - Project Structure - Modules - Sources # Reference [JPA] QueryDSL Q Class 생성 안될 때 pom.xml에 querydsl관련 의존성과, 플러그인을 설정했는데 Q Class가 생성이 되질 않았다.File..
-
[Spring Framework] 다국어 처리 설정 (message properties)Back End/Spring Framework 2022. 8. 15. 15:25
Spring Boot 에서 다국어 처리하기 Spring Boot 에서는 별다른 설정 없이 messages로 시작하는 properties들을 MessageSource로 읽어 Bundle로 인식할 수 있다. Spring Framework 에서 다국어 처리하기 Bean 설정하기 아래 두가지 방법 중 하나로 설정 하면 된다. 1. XML 파일로 설정 2. Java Config 로 설정 @Bean public ReloadableResourceBundleMessageSource messageSource(){ ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setB..
-
[Spring Framework] Maven 라이브러리 연동(ClassNotFoundException: javax.servlet.jsp.jstl.core.Config)Back End/Spring Framework 2022. 6. 9. 19:36
이걸 뭐라 제목을 지어야할 지 아직 모르겠다. ClassNotFoundException: javax.servlet.jsp.jstl.core.Config 클래스를 찾을 수 없다는 에러인데 보통 pom.xml 에 의존성을 추가하고 라이브러리 jar 파일을 다운받아 /WEB-INF/lib 에 추가하라고 한다. 인텔리제이에서 pom.xml 에 의존성을 추가하고 maven refresh 를 하니 External Libraries 에 떡하니 아래와 같이 다운로드 되어있지 않은가...! Gradle 처럼 Maven 도 추가하면 IDE가 알아서 해주는구나! 하고 다시 실행했는데 여전히 ClassNotFoundException: javax.servlet.jsp.jstl.core.Config 를 내뱉었다. 뭔가 링크가 안..
-
[Spring] Controller 에서 가변 json body 받기Back End/Spring Framework 2022. 5. 21. 21:33
아래와 같이 Map 으로 json body 를 동적으로 받을 수 있다. @RestController public class TestController { @PostMapping(path = "/map") public String mapRequest(@RequestBody HashMap param){ System.out.println("param : " + param); return param.toString(); } } 필자는 Request Payload 에는 Data 가 담겨있는데, 컨트롤러에서 자꾸 파라미터가 없다고 에러를 뱉어서 해당 에러를 수정 후, DTO 정의가 귀찮아서 테스트용으로 잠깐 사용했지만 위 내용을 가져온 레퍼런스에서는 확장가능한 유연한 규칙이 있는 가변 파라미터가 필요할 때 사용한다..
-
[Spring] Content type 'text/plain;charset=UTF-8' not supportedBack End/Spring Framework 2022. 5. 21. 21:25
원인 컨트롤러는 @RequestParam 과 @RequestBody 를 사용하여 json 으로 Request를 받고 있는데 클라이언트는 Ajax 요청 시 Request Header 에 'Content-Type': 'application/json' 을 담지 않아 스프링에서 'text/plain' 에 대한 핸들링 방법이 정의되지 않아 발생한 에러 해결법 클라이언트에서 Request Header 에 'Content-Type': 'application/json' 을 담아준다.
-
[Spring Framework] Spring Framework 에서 컴포넌트 스캔 (feat. Spring Boot)Back End/Spring Framework 2022. 4. 16. 17:18
컴포넌트 스캔방식으로 동작하여 빈을 IoC 컨테이너에 차곡차곡 쌓아두는건 알고 있었지만 Spring Boot 에서 컴포넌트 스캔을 직접 설정해본적이 없다. 그래서 Spring 은 @Component 라는 어노테이션이 있으면 내부적으로 자동처리해주는 줄 알았다. 하지만 그렇지 않다. Spring Boot 에서의 컴포넌트 스캔 Boot 에서는 @SpringBootApplication 이라는 어노테이션이 달린 내장톰캣을 실행하는 main 메서드를 담고 있는 클래스가 있는데 @SpringBootApplication 의 구현코드를 보면 @ComponentScan 을 달고 있는 것이 보인다. 그래서 Boot 는 자동적으로 컴포넌트 스캔을 진행해 왔던 것이다. Spring Framework 에서 컴포넌트 스캔 @Sp..