Spring
-
Spring - mybatis jdbc 멀티쿼리 설정Spring 2022. 6. 16. 00:56
mybatis를 사용하면 foreach를 이용해서 쉽게 다중쿼리를 작성할 수 있습니다. UPDATE MEMBER SET state=#{vo.state} where id=#{vo.id}; 이렇게 다중쿼리를 쉽게 작성할 수 있습니다. 하지만 실행을 하면 에러가 발생합니다. 이 경우 jdbc 옵션에 allowMutilQueries를 추가해주면 됩니다. jdbc:mysql://localhost:3306/database?allowMultiQueries=true
-
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.orm.jpa.JpaSystemException: Error attempting to apply AttributeConverter; nested exception is javax.persistence.PersistenceExceptionSpring 2022. 5. 31. 18:45
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.orm.jpa.JpaSystemException: Error attempting to apply AttributeConverter; nested exception is javax.persistence.PersistenceException:.. JPA AttributeConverter에서 exception 발생하는 경우입니다. JPA entity에서 conveter를 만들어서 사용하는 경우에 null 처리가 안되어 있을 때 발생합니다. public class ExampleEntity { // ...
-
[Request processing failed; nested exception is java.lang.NullPointerException] with root causeSpring 2022. 5. 30. 18:49
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause 스프링 개발 중에 이런 에러메시지를 볼 때가 있습니다. 이유 NullPointerException이 발생한 이유는 Query 조건 중에 Null이 들어갔기 때문입니다. 해결방법 쿼리에 Null이 안들어가도록 수정해준다.
-
Request header is too large 해결방법Spring 2022. 5. 30. 18:47
INFO: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. java.lang.IllegalArgumentException: Request header is too large at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java: 512 ) at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java: 501 ) at org.apache.coyote.http11.InternalI..
-
Spring - ThreadPoolExecutor reject policy 설정Spring 2022. 5. 30. 18:38
자바 Thread Pool은 작업 처리에 사용되는 Thread를 제한된 개수만큼 정해놓고 작업 큐에 들어오는 작업을 하나씩 Thread가 맡아서 처리한다. 쓰레드가 바빠서 queue가 full인 경우 어떻게 처리할지에 대해서 설정을 할 수 있다. ThreadPoolExecutor 클래스를 보면 RejectedExecutionHandler를 설정하면 queue가 full인 경우 정책을 설정할 수 있다. public ThreadPoolExecutor( int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, RejectedExecutionHandler handler ) AbortPolicy..
-
Spring - JPA 에러 Unable to locate Attribute with the the given name on this ManagedTypeSpring 2022. 5. 26. 19:31
Unable to locate Attribute with the the given name on this ManagedType JPA 쿼리에서 이런 에러가 발생하는 경우가 있다. 이 경우에는 public class PersonEntity { @Column(name = "id") private Long id; } column 명인 id 를 다르게 쓴 경우에 발생한다. (ex. "ID"로 쓰거나 "Id" 로 쓴 경우) 쿼리의 column명을 확인해주면 된다.
-
Spring - modelMapper list 매핑하기Spring 2022. 5. 12. 18:30
List list = modelMapper.map(sourceList, List.class); 위의 코드는 아래와 같은 warning이 발생한다. warning: [unchecked] unchecked conversion required: List found: List warning을 없애주는 방법은 아래 코드같이 해주면 된다. List list = sourceList.stream() .map(source -> modelMapper.map(source, Person.class)) .collect(Collectors.toList());
-
Spring - Bean Thread safeSpring 2022. 5. 3. 00:23
스프링 Bean은 싱글턴이고 스프링은 멀티쓰레드 환경이다. 하나의 싱글턴 객체를 멀티쓰레드 환경에서 다루면 thread safe 인지 중요하다. 결론부터 말하면 스프링의 Bean은 stateless 상태에서만 thread safe하다. Bean에 변수가 존재하는 경우에는 thread safe 하지 않다. 그래서 Bean을 쓰려면 1. immutable하게 만들던지 2. stateless하게 만들던지 3. lock을 쓰던지 셋 중에 하나를 해야 한다.