본문 바로가기

분류 전체보기146

세션 저장소를 사용하는 3가지 방법 보통 애플리케이션을 만들면 서버를 재시작 했을 때 세션도 초기화 됩니다. 이것은 세션이 내장 톰캣의 메모리에 저장되기 때문에 서버가 재시작될때 초기화가 되는것입니다. 즉, 배포할 때마다 톰캣이 재시작되어 세션이 초기화 되어버리는것입니다. 그리고 만약 2대 이상의 서버를 사용한다면 톰캣마다 세션동기화를 시켜줘야만 합니다. 그래서 실제 협업에서는 다음 3가지중 한가지를 선택합니다. 1. 톰캣 세션을 사용한다. - 일반적으로 별다른 설정을 하지 않을 때 기본적으로 선택되는 방식입니다. - 이렇게 될 경우 톰캣(WAS) 에 세션이 저장되기 때문에 2대 이상의 WAS가 구동되는 환경에서는 톰캣들 간에 세션 공유를 위한 추가 설정이 필요합니다. 2. MySQL 과 같은 데이터베이스를 세션 저장소로 사용한다. - 여.. 2020. 7. 25.
Spring Security 와 OAuth2 로 로그인 구현 (구글, 카카오, 네이버 등) 다음은 구글 자동로그인 구현중에 해당하는 내용입니다. 자동 로그인 구현을 위한 application-oauth.properties 파일을 다음과 같이 작성합니다. spring.security.oauth2.client.registration.google.client-id=클라이언트 ID spring.security.oauth2.client.registration.google.client-secret=클라이언트 보안 비밀 spring.security.oauth2.client.registration.google.scope=profile,email 맨 마지막줄 scope=profile, email scope 의 기본값은 openId, profile, email 입니다. 강제로 profile, email 을 등록.. 2020. 7. 25.
단위테스트의 필요성에 대해서 처음 스프링을 공부하며 JUnit을 이용한 단위 테스트를 할 때 항상 의문을 느꼈습니다. 이런식으로 테스트 하는게 무슨의미가 있지? 직접 애플리케이션을 실행해서 눈으로 보면서 기능을 테스트하는게 더 좋은거 아니야? 그냥 직접 실행해서 테스트한다음 깃허브에 Push 해도 되는데? 그래서 테스트 코드에 대해서는 공부하지않고 코드만 따라치고 넘겼습니다. 최근에 이동욱님의 책을 읽으며 본 테스트 코드의 장점에는 3가지가 있었습니다. - 빠른 피드백 - System.out.println() 을 통해 눈으로 검증하는것이 아닌 자동검증 가능 - 개발자가 만든 기능을 안전하게 보호 이것만 보면 아직 어떤 장점인지 와닿지 않습니다. 1. 빠른 피드백 단위 테스트 코드를 작성함으로써 얻는 이점에 대한 위키디피아의 글입니다.. 2020. 7. 24.
단위테스트 실행 콘솔에서 실행된 MySQL 쿼리 보기 Spring Data JPA 를 단위 테스트할 때 기본 설정으로 하면 실행된 쿼리를 볼 수 없습니다. 실행된 쿼리도 보면서 테스트를 진행하고 싶습니다. 우선 resources 디렉토리 아래에 application.properties 파일을 생성합니다. 옵션은 다음과 같이 추가합니다. spring.jpa.show_sql=true 그럼 다음과 같이 콘솔에서 쿼리 로그를 확인할 수 있습니다. 그런데 테이블을 만드는 쿼리문 create table posts (id bitint generated by default as identity, author varchar(255) 를 보시면 익숙한 MySQL 쿼리가 아닙니다. 이는 H2의 쿼리 문법이 적용되었기 때문입니다. H2는 MySQL의 쿼리를 수행해도 정상적으로 .. 2020. 7. 22.
SpringBoot 각종 Annotation @SpringBootApplication ( @SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan을 합친 것과 같다) 스프링 부트의 자동 설정, 스프링 Bean 읽기와 생성을 모두 자동으로 설정해줍니다. 특히 @SpringBootApplication 이 있는 위치부터 설정을 읽어가기 때문에 이 클래스는 항상 프로젝트의 최상단에 위치해야만 합니다. SpringApplication(프로젝트의 메인 클래스)의 main 메소드에서 실행하는 SpringApplication.run으로 인해 내장 WAS (Web Application server, 보통 톰캣)가 실행됩니다. @SpringBootConfiguration : 스프링 부트의 설정을 나타.. 2020. 7. 22.