본문 바로가기

spring9

Spring Jpa 테스트 H2, TestEntityManager Spring Jpa를 테스트할 떄 사용중(운영, 개발)인 DB를 사용하기 애매할 때가 있다. 이럴때 사용할 수 있는 방법 2가지를 소개하려고 한다. 1. H2(Default) 첫 번쨰로 In Memory Database인 H2 데이터베이스를 사용하는 방법이다. @DataJpaTest 어노테이션을 사용해서 테스트를 하면 테스트 때 참조할 DB의 디폴트가 H2 DB다. 그래서 H2 DB 의존성이 없으면 실행이 안 될 것이다(이떄는 @AutoConfigureTestDatabas(replace = Replace.NONE)을 붙혀서 사용 DB를 참조하게 하면 된다.) H2 DB사용 사용 방법은 https://dongjuppp.tistory.com/68?category=886936 이 글에서 이미 설명하였다. 이번.. 2022. 1. 20.
no main manifest attribute in 에러 no main manifest attribute in 에러는 spring 애플리케이션을 빌드한 결과물로 나온 jar파일에서 처음 호출할 Main 메소드를 찾지 못했다는 에러다. 주로 jar파일을 "java -jar app.jar" 명령어로 실행을 시킬떄 일어난다. java -jar를 사용해서 jar파일을 실행시킨다면 JVM이 jar파일의 Main메소드를 찾아서 호출한다. 이떄 Main메소드의 위치는 MANIFEST.MF라는 파일에 명시가 되어있다. 정상적인 경우 아래와 같이 Start-Class라는 이름의 Main메소드 위치가 나와야한다. Manifest-Version: 1.0 Created-By: Maven Jar Plugin 3.2.0 Build-Jdk-Spec: 15 Implementation-Ti.. 2021. 8. 3.
Spring Lifecycle Callback 스프링 빈의 생성 라이프사이클 콜백 메소드의 종류와 만드는 방법을 알아보자. 1. 생성 콜백 우선 생성 콜백이 있다. 생성 콜백은 스프링 빈이 생성 될때 호출되는 메소드이다. 생성 콜백을 만드는 방법 3가지가 있다. 1.InitializingBean interface 상속 2.XML 혹은 @Configuration 에서 Bean 속성 설정 3.@PostConstruct 어노테이션 사용 2021. 3. 20.
CORS CORS (cross origin resource sharing)란? cors는 웹환경에서 서로 다룬 출처에서 온 자원을 어떻게 처리할지에 대한 것이다. cors가 나온 이유는 sop(same origin policy)정책 때문이다. 웹 환경을 오픈된 환경이기 때문에 외부의 공격에 쉽게 노출이 된다. 그렇기 때문에 같은 출처에서 온 자원만을 허용하는 것이다. 참고로 cors가 올바른지는 서버, 클라이언트가 하는 것이 아니라 브라우져에서 확인을 한다. 여기서 출처란 프로토콜 + 호스트 + 포트 이다. 위처럼 프로토콜,호스트,.포트번호가 같다면 같은 출처인 것이다. 뒤에 쿼리부붙은 달라도 상관없다. 우리가 어떤 요청을 하면 요청 메시지는 위처럼 생기는데(리액트에서 axios를 이용해 post 요청을 한 것이.. 2021. 3. 14.
Spring 단위테스트 -2 Data 이번에는 단위테스트에서 Database에 접근하는 클래스를 테스트하는 방법을 보자. 우선 테스트를 알아보기전에 테스트할 코드를 만들어보자. org.springframework.boot spring-boot-starter-data-jpa com.h2database h2 우선 내장 데이터베이스를 이용하기 위해 h2와 데이터베이스 프로그래밍을 위해 jpa를 가져오자. CREATE TABLE user ( id VARCHAR(45) NOT NULL, password VARCHAR(45) NULL, name VARCHAR(45) NULL, PRIMARY KEY (id)); 그다음은 간단하게 테이블을 하나 추가한다. import javax.persistence.Entity; import javax.persistenc.. 2021. 2. 28.
Spring 단위테스트 - 1 Spring Boot 단위테스트 단위테스트란 앱을 모듈단위로 각각 테스트하는것이다. 스프링에서 단위테스트를 어떤식으로 진행하는지에 대해 적어본다. 우선 단위테스트를 위해 한가지 예시코드를 만들었다. public interface RepositoryInterface { boolean save(UserDto userDto); } @Repository public class MyRepository implements RepositoryInterface{ private Hashtable userTable=new Hashtable(); @Override public boolean save(UserDto userDto){ userTable.put(userDto.getName(),userDto); return use.. 2021. 2. 28.