Project

문제 발생redis에 MemberRequestDto Object를 set 하는 과정에서 아래와 같은 오류가 발생했다.Java 8 date/time type 'java.time.LocalDate' not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling 원인 분석에러 로그를 보면 Java 8에서는 'java.time.LocalDateTime 형식의 date/type 형식을 지원하지 않으니 "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" 모듈을 추가하여 처리하라고 한다. 그런데 라이브러리를 확인해보니 이미 모듈을..
계기Repository를 만들 때 사용하지 않는 메서드들이 많은 JpaRepository대신 Repository를 상속받아서 쓰려고 했다./*public interface MemberRepository extends JpaRepository {}*/public interface MemberRepository extends Repository {} 이렇게 MemberRepository 인터페이스를 만들고 나서OCP를 지키기 위해 Config 클래스 코드를 짜다 보니 문제가 생겼다. Config 클래스에서 인터페이스를 사용하고자 @RequiredArgsConstructor와 MemberRepository 필드로 의존성을 주입해서 하자니 MemberRepository가 아닌 다른 MemberJpaReposit..
회원가입할 간단한 화면을 개발하고 있는데 html, css, js 파일을 고칠 때마다 서버를 재기동해 주는 것이 불편했다.Eclipse로 개발했을 때는 서버 재기동 없이 프런트단에 잘 반영되었어서 더 불편함을 느꼈다. 따라서 정적 자원들을 변경할 때마다 반영해 주는 방법을 알아보자.MacBook, IntelliJ, Spring Boot, Gradle을 사용하는 중이다. 1. Dependency 추가gradle에 아래 코드가 있는지 확인하고, 없으면 추가한다.developmentOnly 'org.springframework.boot:spring-boot-devtools' devtools는 Spring Boot에서 제공하는 개발 편의를 위한 모듈로 브라우저로 전송되는 내용들에 대한 코드가 변경되면 자동으로 ..
문제 발생SpringBoot로 개발을 하고 실행시켜 보니 아래와 같은 오류가 나타났다.Parameter 0 of constructor in XXX.member.controller.MemberController required a single bean, but 2 were found:- memberServiceImpl: defined in file [/XXX/out/production/classes/com/travelplan/member/service/MemberServiceImpl.class]- memberService: defined by method 'memberService' in class path resource [XXX/member/config/MemberConfig.class]This may..
문제 발생Repository 작성 후 JPA를 테스트해 보기 위해 테스트 코드에 @DataJpaTest 어노테이션을 붙여서 실행해 봤는데 아래와 같은 오류가 났다.Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Unsatisfied dependency expressed thr..
문제 발생Repository 작성 후 JPA 테스트를 해보려고 간단한 테스트 코드를 짜서 실행해 보니 아래와 같은 오류가 나왔다.Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.apache.logging.slf4j.Log4jLoggerFactory loaded from file:/pathXXX/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4..
프로젝트 개발에 사용한 것을 정리한다. Spring Data JPA를 사용하면 일반적으로 Repository에서 아래 인터페이스 중 하나를 상속하여 사용하게 된다. JpaRepository CrudRepository Repository JpaRepository 아래로 갈수록 저수준 모듈이며, 기능 구현이 많다. 예를 들어, CurdRepository의 경우 메서드를 정의하지 않아도 간단한 CURD 사용이 가능하다. public interface MemberRepository extends CrudRepository { } 해당 인터페이스가 비어 있어도 CrudRepository 인터페이스를 상속받기 때문에 아래의 메서드들을 호출할 수 있다. save() findById() findAlll() count(..
프로젝트 개발에 사용한 것을 정리한다. JPA, ORM JPA는 ORM(Object-relational mapping)이며 객체 지향과 DB간 발생하는 차이를 매핑해 준다. 즉, 객체는 객체대로 설계하고, DB와의 차이점에 대해서는 ORM을 통해서 매핑하게 된다. SQL 중심적 개발에서 객체 중심으로 개발할 수 있게 되며, DB에 종속적이지 않게 된다. JPA는 JDBC API를 통해서 DB에 접근하며, Java Application과 JDBC API 사이에 존재하게 된다. JPA는 인터페이스의 모음이며, Hibernates는 그 구현체이다. 이 JPA에서 중요한 것은 EntityManager와 Persistence Context(영속성 컨텍스트)이다. 영속성 데이터를 생성한 프로그램이 종료되어도 사라지..
프로젝트에 MySQL을 사용하려고 버전을 확인해 봤다. 8.0을 사용하려고 하는데, 회사에서 사용했던 버전은 5버전대 였다. 8.0과 다른 버전들은 어떤 차이가 있는지 알아보자! 5.x 버전과 8.x 버전 MySQL 5.5~5.7 버전에서는 안정성과 성능 개선에 집중했다면, MySQL 8.0 버전으로의 업그레이드는 상용 DBMS가 가지고 있는 기능들을 장착하는 시기였다. 또한 8.0 버전으로 업그레이드하면서 몇몇 기능들이 향상되었다. 개선된 점 읽기 전용에서 I/O Bound 내림차순 인덱스를 지원하면서 I/O Bound 읽기 성능에서 크게 향상되었다. (I/O Bound에 의한 처리량 제한을 개선했다.) I/O Bound 계산을 완료하는 데 걸리는 시간이 입출력 작업 시간에 의해 결정되는 조건 개선되는..
프로젝트 개발 시 프런트를 JSP로 개발할지 Thymeleaf로 개발할지 고민했다. 회사에서 안 써본 Thymeleaf를 사용해보고 싶었다. 그렇다고 무작정 사용할 수는 없으니 Thymeleaf와 JSP 차이를 정리해 보자! jar 파일로 export 가능 여부 Thymeleaf와 JSP의 가장 큰 차이점은 jar 파일로 export가 가능한지 여부이다. spring 프로젝트를 빌드하면 기본적으로 jar가 빌드된다. war는 jar와 달리 Web Server나 WAS가 필요하고 사전에 정의된 구조만 사용해야 한다. 즉, spring 프로젝트에서는 jar로 export 되는 것이 더 편리하다. JSP는 jar 패키징이 불가능하고 war만 가능하다. 따라서 jar로 패키징이 가능한 Thymeleaf를 spr..
Yn3(인삼)
'Project' 카테고리의 글 목록