본문 바로가기

Development/Spring Framework

(21)
세션 저장소로 데이터베이스 사용하기 문제점 애플리케이션 재 실행시 로그인이 해제되는 문제를 해결하기 위하는데, 이는 세션이 내상 톰캣의 메모리에 저장되기에 발생합니다. 메모리에 저장되다 보니 내장톰캣처럼 앱 실행 시 실행되는 구조는 항상 초기화가 발생합니다. 다시 이야기하자면, 이런 경우 배포할 때마다 톰캣이 재시작하는 문제가 발생한다는 것이지요. 만약 두 대 이상의 서버에서 서비스를 하고 있다면 톰캣마다 세션 동기화 설정이 필요하기도 합니다. 위와 같은 이유로 현업에서는 세션 저장소에 세 가지 중 한 가지를 선택해 이용합니다. 동기화(Synchronization) 프로세스, 스레드들이 시행되는 시점을 조절해 서로 알고 있는 정보를 일치하게 하는 것 해결방안 톰캣 세션 사용 별 다른 설정을 하지 않을 때 기본적으로 선택되는 방식 이렇게 될..
스프링 자바 커스텀 어노테이션 생성하기 - 파라미터 어노테이션 (1) @interface 클래스 선언 (2) ***ArgumentResolver 생성 HandlerMethodArgumentResolver 를 상속 받아 supportsParameter(), resolverArgument() 오버라이딩 테스트 결과 다른 타입의 객체를 파라미터로 넘겨도 컴파일 과정에서 에러를 발견하지는 않음 (3) 생성한 ***ArgumentResolver를 WebConfig에 추가
[에러 기록] Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary. [해결 못한 포스팅] 1차 에러 발생 아래와 같이 수정 spring.datasource.username=crowdFunding spring.datasource.password=crowdFunding spring.datasource.url=jdbc:log4jdbc:mysql://localhost:3306/crowdFunding #net.sf.log4jdbc.sql.jdbcapi.DriverSpy spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator 2차 에러 발생 Driver com.mysql.cj.jdbc.Driv..
[Thymeleaf] 스프링 프레임워크의 View Thymeleaf Thymeleaf Thymeleaf는 웹 및 독립형 환경을 위한 최신 서버 측 Java 템플릿 엔진입니다. Thymeleaf의 주요 목표는 브라우저에 올바르게 표시 될 수 있고 정적 프로토 타입으로 작동 할 수있는 HTML 인 우아한 자연 템플릿을 개발 워크 플로에 가져와 개발 팀에서보다 강력한 협업을 가능하게하는 것입니다. Spring Framework 용 모듈, 즐겨 찾는 도구와의 통합 및 사용자 고유의 기능을 연결할 수있는 기능을 갖춘 Thymeleaf는 할 수있는 일이 훨씬 많지만 현대 HTML5 JVM 웹 개발에 이상적입니다. Thymeleaf is a modern server-side Java template engine for both web and standalone environments..
더티 체킹(Dirty Checking)이란 내용 출처 jojoldu.tistory.com/415 더티 체킹 (Dirty Checking)이란? Spring Data Jpa와 같은 ORM 구현체를 사용하다보면 더티 체킹이란 단어를 종종 듣게 됩니다. 더티 체킹이란 단어를 처음 듣는분들을 몇번 만나게 되어 이번 시간엔 더티 체킹이 무엇인지 알아보겠습 jojoldu.tistory.com 간단 요약 상태 변경 검사 쿼리의 update를 진행할 때, DB와 통신하지 않고도 업데이트 되는 것을 볼 수 있음 가능한 이유는 JPA에서 트랜잭션이 끝나는 시점에 변화가 있는 모든 엔티티 객체를 DB에 자동 반영하기 때문 변화의 기준은 최초의 조회상태이며, 이와 비교해 변화가 있을 경우 update 쿼리 진행 영속성 컨텍스트가 관리하는 Entity만 반영됨
JPA Auditing으로 생성시간/수정시간 자동화 유지보수에 있어 Entity에는 해당 데이터의 생성시간과 수정시간은 굉장히 중요한 정보입니다. 그렇다 보니 매번 DB에 삽입/갱신 전 날짜 데이터를 등록/수정하는 코드가 들어가게 됩니다. 단순반복적인 코드를 깔끔하게 처리하기 위해 JPA Auditing을 사용합니다. LocalDate 사용 JAVA 8부터 LocalDate와 LocalDateTime이 등장했습니다. 그렇다면 이전에 존재한 Date, Calendar 클래스의 문제점은 무엇일까요? Data와 Calendar 문제점 - 불변 객체가 아닙니다. 고로 멀티스레드 환경에서 언제든 문제가 발생할 수 있습니다. - Calendar의 월(Month) 값 설계는 잘못되었습니다. Calendar.OCTOBER의 값은 9입니다. 우리가 실생활에서 인지하는 값..
H2 Database 접근 application.properties에 아래 옵션 추가 spring.h2.console.enabled = true main 메소드 실행 http://localhost:8080/h2-console 접속 JDBC URL에 아래 입력 jdbc:h2:mem:testdb connect 버튼 클릭
[에러 기록] Request method 'XXX' not supported 테스트 코드 중 아래와 같은 에러 발생 Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'PUT' not supported] org.springframework.web.client.RestClientException: Error while extracting response for type [class java.lang.Long] and content type [application/json;charset=UTF-8]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse ..