일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- dp
- 트리
- 이분 탐색
- 도커
- spring cloud
- 달팽이
- Gradle
- 게이트웨이
- 스프링 시큐리티
- 비트마스킹
- 서비스 디스커버리
- 구간 트리
- 유레카
- 다익스트라
- Java
- ZuulFilter
- 메모이제이션
- docker-compose
- spring boot
- 백트래킹
- 이분 매칭
- 주울
- 플로이드 와샬
- Zuul
- BFS
- Logback
- 구현
- 스택
- Spring Cloud Config
- 완전 탐색
- Today
- Total
목록분류 전체보기 (387)
Hello, Freakin world!
시나리오 - 인증 기능을 구현한다. - 로그인 화면에서 인증 요청을 받는다. - 인증 요청 정보를 Member 데이터베이스에 저장된 정보와 대조해 인증한다. 1. 로그인 화면 스프링 시큐리티에 form 로그인 방식 설정을 해두면 위와 같이 동작합니다. 보호된 자원에 접근하는 경우, AccessDeniedException이 발생합니다. ( 폼 로그인 설정이 없을 경우 단순하게 403 Forbidden 에러 페이지를 보여줍니다.) SecurityFilterChain에 등록되어 있는 예외처리 필터에서 AccessDeniedException을 캐치해 로그인 화면으로 클라이언트를 리다이렉트 시킵니다. form 로그인을 설정하는 코드는 아래와 같습니다. ... @EnableWebSecurity public clas..
www.baeldung.com/jackson-ignore-null-fields Ignore Null Fields with Jackson | Baeldung Ignore null fields with Jackson 2 - either globally, per class or even per field. www.baeldung.com import static com.fasterxml.jackson.annotation.JsonInclude.Include.*; @JsonInclude(NON_NULL) public class AuthenticationResponse { ... 클래스나 필드 레벨에서 @JsonInclude(NON_NULL) 을 사용해주면 된다.
외부 모듈과 상호작용하는 기능의 통합 테스트에 관한 이야기입니다. JUnit 5 @Tag 애너테이션을 이용한 테스트 분류 JUnit 5 버전에서는 테스트를 다양하게 분류할 수 있도록 @Tag 애너테이션을 지원합니다. 먼저 아래와 같이 문자열을 이용해 테스트들을 분류합시다. import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; public class ManyTest { @Tag("integration") @Test public void integrationTest1() {} @Tag("integration") @Test public void integrationTest2() {} @Tag("unit") @Test public void u..
... public class TestPasswordEncoder { @Test public void delegatingPasswordEncodingTest() { //given String givenPassword = "hello"; //when PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder(); String encodedPassword = passwordEncoder.encode(givenPassword); //then assertThat(passwordEncoder.matches(givenPassword, encodedPassword)).isTrue() ; } @Test public ..
설치하기 아래의 명령어를 터미널에 입력합니다. $ sudo add-apt-repository ppa:redislabs/redis $ sudo apt-get update $ sudo apt-get install redis 실행 & 테스트 $ redis-server 레디스가 기본으로 6379 포트를 잡게 되는데, 이미 6379 포트가 사용중이면 실행에 실패합니다. 그럴 경우 --port 옵션을 이용해 빈 포트를 지정해줍니다. $ redis-server --port 6380 서버가 띄워졌다면 아래와 같은 로그가 뜹니다. redis-cli 명령으로 간단하게 핑을 보내 서버가 동작하는지 확인할 수 있습니다. 우선 redis-cli 명령으로 레디스 서버에 접속합니다. $ redis-cli -p 6380 접속한 상태..
시나리오 - 멤버 서비스, 팀 서비스 2개의 서비스가 존재한다. - 멤버는 하나의 팀에 소속될 수 있다. - 클라이언트가 멤버를 조회할 때, 멤버가 팀에 속해있다면 팀 서비스에 요청에 팀 정보를 가져온다. - 멤버 서비스에서 팀 서비스에 요청 데이터를 받으면 이를 멤버 서비스에 캐시한다. - 팀 서비스 데이터가 수정되거나 삭제될 때, 이벤트를 발생시켜 멤버 서비스에 캐시된 내용을 수정하거나 삭제한다. 멤버 서비스 모든 클래스를 살펴보는건 너무 피곤한 일이니, 중요한 부분만 살펴보자. 멤버 서비스에서 중요한 부분은 3가지다. 1. 팀 서비스에 데이터를 요청하기 2. 팀 데이터를 캐시하기 3. 팀 서비스에서 보내는 이벤트를 받아 처리하기 1. 데이터 요청 부분 RestTemplate 빈을 생성해 동기식 요청..
설치 및 주키퍼 설정 우선 github.com/yahoo/CMAK/releases 에서 카프카 매니저를 다운로드 합니다. 필자는 tar.gz를 받았습니다. 그리고 다운로드 받은 경로로 들어가 압축을 풀어줍시다. tar -xf CMAK-3.0.0.5.tar.gz 압축을 푼 폴더의 sbt 파일을 이용해 빌드해줍니다. ./sbt clean dist 그러면 target/universal 디렉토리에 다시 cmak-3.0.0.5.zip 파일이 생깁니다. 이 파일은 배포용으로, 실행 가능한 파일들을 담고 있습니다. 원하는 위치에 cmak-3.0.0.5.zip 의 압축을 풀면 설치가 끝납니다. unzip cmak-3.0.0.5.zip 설정 정보들은 conf/application.conf에 추가할 수 있습니다. appl..
카프카, 주키퍼 클러스터를 구성하자. docker-compose.yml version: "3.0" services: zk1: image: zookeeper restart: always hostname: zk1 ports: - 2181:2181 environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=zk3:2888:3888;2181 volumes: - "~/zk-cluster/zk1/data:/data" zk2: image: zookeeper restart: always hostname: zk2 ports: - "2182:2181" environment: ZOO_MY_ID: 2..
docker-compose.yml version: "3.0" services: zk1: image: zookeeper restart: always hostname: zk1 ports: - 2181:2181 environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=zk3:2888:3888;2181 volumes: - "~/zk-cluster/zk1/data:/data" zk2: image: zookeeper restart: always hostname: zk2 ports: - "2182:2181" environment: ZOO_MY_ID: 2 ZOO_SERVERS: server...
포스트 타입 필터는 주울에서 클라이언트에게 반환하는 응답을 감시, 수정하는 용도로 사용합니다. 이전에 사전 필터에서 correlation-id 라는 헤더를 모든 요청에 추가해서 보냈습니다. 그 과정에서 RequestContext에 저장했던 correlation-id를 응답에 추가하는 필터를 만들어 보겠습니다. 아주 간단합니다. ResponseFilter package springboot.cloud.zuulexample.filter; import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; import com.netflix.zuul.exception.ZuulException; import static org.spr..