본문 바로가기

분류 전체보기139

[Spring] Spring Boot와 데이터베이스 스프링 부트는 자동으로 내장 데이터베이스를 생성한다 build.gradle에 스프링 부트에 내장된 H2, HSQL,Derby 데이터베이스 의존성을 추가하면 자동으로 데이터베이스를 구성할 수 있다. 근데 만약 클래스 경로에 여러 내장 데이터베이스가 존재한다면 spring.datasource.embadded-database-connection 을 이용하여 어떤 데이터베이스를 사용할 것인지 선택할 수 있다. 만약 none으로 한다면 내장 데이터베이스 자동설정은 비활성화 된다 또한 spring.datasource.url 과 같이 특정 url 이 없다면 내장 데이터 베이스를 자동으로 생성한다 그렇다면 url 즉 내장 데이터베이스의 주소는 어떻게 되는 걸까?? 무작위로 결정된다 @SuppressWarnings("d.. 2023. 11. 7.
[Spring] SpringBoot 테스트에 테스트용 데이터베이스 연결 테스트 코드를 실행할때 실제 DB에 접근하는 경우가 있을 것이다. 이런 경우 메인 어플리케이션이 로드될때마다 테이블을 드롭하고 생성하는 경우가 아니면 이미 insert된 primary key를 다시 테스트해서 충돌발생 Auto increment key라면 @Trancsaction이나 delete로 지우더라도 key값은 증가 따라서 메인의 데이터베이스와 테스트의 데이터베이스 분리가 필요하다 application.yml 또는 application.properties 보통 application 파일에 데이터베이스 설정을 작성해주면 스프링부트가 자동으로 DataSrouce 빈으로 데이터베이스 정보를 등록해주어 사용할 수 있게 된다 그렇다면 테스트 데이터베이스는 어떻게 분리할까? 테스트는 인메모리로 간편하게 h2.. 2023. 11. 7.
[Spring]org.passy 사용하여 @Password validation Validation을 공부하다가 org.passy를 처음으로 접하게 되었다. 비밀번호 규칙을 강제하는 라이브러리이다. 비밀번호 검증과 관련하여 간편하게 유효성 검사를 수행할 수 있다 의존성추가 org.passay passay 1.6.4 커스텀 애노테이션 정의하기 위해 ConstraintValidator 구현하여 만들기 import org.passay.*; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import java.util.ArrayList; import java.util.List; public class PasswordRuleValidator implements Cons.. 2023. 11. 7.
[Spring Security] AuthenticationProvider(인증 공급자), SecurityContext AuthenticationProvider는 인증논리를 담당 → 요청을 허용할지 말지 결정하는 조건과 명령 발견 → AuthenticationManager는 HTTP 필터 계층에서 요청을 수신하고, 이 책임을 AuthenticationProdivder에 위임하는 구성요소 AuthenticationProvider 인증과 관련하여 메세지, 코드 등과 같이 다양한 인증논리를 이용한다. 이를 구현할 수 있는 것이 AuthenticationProvider 이다 인증 프로세스 중 요청 나타내기 Authentication 인터페이스 인증 요청 이벤트를 나타내며 애플리케이션에 접근을 요청한 엔티티의 세부정보를 담는다 인증 요청 이벤트와 관련한 정보를 인증 프로세스 도중과 이후에 이용가능하다 애플리케이션 접근을 요청하는 .. 2023. 11. 7.
[Spring Security] mock 테스트시 401 에러 이전에 이미 403에러가 뜨는 경우를 만난적이 있어서 이전 블로그에 관련 내용을 쓴적이 있다 https://velog.io/@haebing0309/WebMvcTest%EC%97%90%EC%84%9C-Spring-Security-%EC%A0%81%EC%9A%A9-403%EC%97%90%EB%9F%AC-csrf @WebMvcTest에서 Spring Security 적용, 403에러 -csrf 스프링 시큐리티 적용한 Rest API Controller 테스트하다가 계속 403 에러가 나왔다. chatgpt에도 물어보고 에러를 검색해봐도 안나와서 스프링시큐리티 403에러 치니까 나오더라...일단 나의 코드를 설 velog.io 위 에러는 csrf()를 안해줘서 나는 에러였다 그래서 처음에 403에러가 나왔길래 .. 2023. 11. 4.
[Redis] Redis 와 Cache, Memcached 현대 웹서비스에서는 캐시의 역할이 중요하다. 서비스의 규모가 커져감에 따라 모든 요청을 DB직접 참조 또는 API호출로 처리한다면 성능과 에러 등과 같은 이슈가 발생할 수 밖에 없다. Cache Cache란 캐시란 나중에 요청한 결과를 미리 저장해둔 후 빠르게 서비스를 해주는 것을 의미 즉 미리 결과를 저장하고 나중에 요청이 오면 DB또는 API가 아닌 캐시로 접근하여 요청을 처리 캐시가 동작할 수 있는 철학에는 파레토 법칙이 있다 파레토 법칙 → 80퍼센트의 결과는 20퍼센트의 원인으로 인해 발생한다 즉 캐시가 효율적일 수 있는 이유는 모든 것을 캐시하는 것이 아니라 많이 사용되는 20%를 캐싱한다면 전체적으로 영햐을 주어 효율을 극해화할 수 있다 캐시 사용구조 기본적으로 캐시는 클라이언트 요청 → 캐.. 2023. 11. 4.
728x90