목록JAVA (34)
정구리의 우주정복
항상 습관처럼 @Builder 와 @NoArgsConstructor ,@AllArgsConstructor 를 썼는데 왜 둘을 같이 써야하는지, 어떤 원리로 동작하는지도 모르고있었다나는 바보 ! lombok 개발자 !! 알아보도록 하자 틀리거나 문제가 있다면 댓글로 알려주세요 감사합니다땡큐@Builder 의 역할생성자를 메서드 체인을 사용해서 호출할 수 있는 빌더 클래스를 생성해준다순서도 상관없고, 값을 넣지 않은 경우 default 값이 들어가게 된다@Builder 장점쉽게 빌더 패턴을 사용할 수 있음 (객체 생성 후 값을 변경되지 않게 할 수 있다)유연한 객체 생성 (필드 순서에 상관없음, 필요한 필드만 생성 가능)옵션 값 처리 (필수 값만 넣어주고 나머지는 기본값을 사용가능함) @Builder 사용법..
yaml 에 설정한 정보들 중 git에 올라가지 않기를 원하는 정보를 git ignore 에 추가해보겠다 ! ignore 될 정보들을 포함할 ignore 폴더를 만들어줬다 (이름은 마음대로 만들어도 상관없음)하위에 나는 내가 제외하고자 하는 정보에 대한 것을 yaml 로 만들어줬다 ! 기존 application.yaml 에 있던 spring > security 의 내용들을 숨기고 싶어 해당 내용을 새로 만든 파일에 작성해준다 이후 application.yaml 안에 작성한 내용들을 import 해준다 옵션은 optional(있을수도없을수도있다는 뜻), classpath(경로설정을 위해) 두개를 추가해줬다 .gitignore 로 가서 해당 경로 하위의 녀석들은 깃에 올리지 않겠다고 정의해주면 끗 !! ..
api 서버들에서 token 파싱하는걸 매번 만들 수는 없어서 toygry-common 모듈을 만들었다 ! 여기에다가 token 파싱하는거를 만들어 놓고 다른 api 서버들에서 가져다 쓰면 여러번 만들지 않아도 될것이라는 멋진 생각 구조는 이런식으로 잡아봤다 constants에는 아직 넣을게 없어서 안넣음 ~ 우선 KeycloakToken.javapublic record KeycloakToken(String name, String userId, String email) {} 이게 다임 .. record 처음 써보는데 어째서 이리도 편리한것 ..?? lombok 이 필요없넹나중에 더 많이 써봐야겠다 TokenUtils.javatoken (String) 의 payload 부분을 가져온다 -> 해당 부..
오늘은 게이트웨이에 왕 간단한 글로벌 필터를 만들어보려 한다 api 요청 후 글로벌필터를 거친 후에 api 를 실행하는 형태 ! GlobalFilter.java 파일 @Component@Slf4jpublic class GlobalFilter extends AbstractGatewayFilterFactory { public GlobalFilter() {super(Config.class);} @Override public GatewayFilter apply(Config config) { //Custom Pre Filter return (exchange, chain) ->{ ServerHttpResponse response = exchange.ge..
저번에 게이트웨이랑 api 서버 2개를 만들었는데 플젝마다 repo 를 만들면 git 에서 관리가 어려울 것 같아 멀티 모듈로 만들어보려고 한다 !!!프로젝트 우클릭 -> new -> module을 선택하면 spring 프로젝트 생성하는 창이 동일하게 나오는데 거기서 원하는 대로 세팅을 해서 생성해주면 된다나는 api 서버 2개랑 게이트웨이를 만들어줬따이런식으로 구성이 되게 된다최상위의 src 는 사용하지 않을거니까 지워도 된다 (근데 혹시 몰라서 일단 남겨놓음 .. ㅎㅎ)각각의 서버를 실행할 수 있게 된다 ! 여러개의 서버를 한개의 repo 에서 관리하는것이 가능하게 된다는 말씀모든 모듈에서 사용하는 설정은 최상위에서 설정을 해놓으면 (ex. build.gradle) 하위에서도 동일하게 사용이 가능하다..
저번에 만들었던 keycloak 이랑 spring 연결해놓은거를 응용해서 gateway를 만들려고 한다우선 gateway 의 역할은client 에서 요청을 하면 api gateway로 들어오게 되어서 게이트웨이에서 해당 api 로 라우팅을 해주는 역할이다 !!!나는 여기에 keycloak 을 같이 써보려고 하는데 이유는 모든 api 서버마다 keycloak 연결을 해 줄 필요 없이 게이트웨이에 keycloak 을 연결해준 뒤 api 서버에서는 별도의 인증 없이 api 만 실행해주면 좋지 않을까 라는 생각이기 때문이다 !내가 생각한 flow 는유저가 서비스에 접근 시 -> keycloak 으로 redirection -> 로그인 하면 token 이 발급됨 + 서비스에 접근 -> 서비스에서 api 요청 -> ..
저번에 띄운 keyclaok 과 나의 spring 프로젝트 녀석을 연동하려 해본다 기록용이라 엉망진창일수도 있음 .. ㅜㅜ https://keycloak.org/docs/latest/securing_apps/#_spring_boot_adapter Securing Applications and Services GuideIn order for an application or service to utilize Keycloak it has to register a client in Keycloak. An admin can do this through the admin console (or admin REST endpoints), but clients can also register themselves throu..
저번에 Keycloak 을 띄웠다면 이번에는 Postgresql 을 띄워보겠다 ! docker-compose.yml 작성 version: '3.8' services: keyclaok: image: quay.io/keycloak/keycloak:24.0.3 ports: - "3000:8080" environment: - KEYCLOAK_ADMIN=admin - KEYCLOAK_ADMIN_PASSWORD=admin command: ["start-dev"] postgresql: image: postgres:16 ports: - "3100:5432" environment: - POSTGRES_PASSWORD=admin - POSTGRES_USER=admin - POSTGRES_DB=jungry_p..