Spring79 spring security formLogin 전체적인 흐름 동작 방식 ✅ SecurityConfig 클래스 전체 코드 분석📌 클래스 레벨 어노테이션@Configuration설정 이유: 스프링 설정 클래스임을 나타냅니다.동작: 스프링 컨테이너가 이 클래스를 읽어 빈(Bean)을 등록합니다.필요성: 보안 관련 설정을 중앙화하여 관리할 수 있습니다.@EnableWebSecurity(debug = true)설정 이유: 스프링 시큐리티를 활성화하고, 디버깅 모드를 켭니다.동작: 시큐리티 필터 체인이 활성화되고, 디버깅 정보가 출력됩니다.필요성: 보안 설정을 활성화하고, 개발 중 디버깅 정보를 쉽게 확인할 수 있습니다.@RequiredArgsConstructor설정 이유: Lombok을 사용해 생성자를 자동 생성합니다.동작: final 필드(customAuthenticationSu.. 2025. 3. 21. 일반적인 MVC 와 @FeignClient에서 @RequestBody / @PathVariable의 사용법 @RequestBody와 @PathVariable은 일반적으로 Spring MVC에서 사용하는 방식과 Spring Cloud OpenFeign에서 사용하는 방식에 약간의 차이가 있습니다. 아래에서 두 어노테이션의 일반적인 Spring MVC 사용과 FeignClient 사용을 비교하여 설명하겠습니다.1. @RequestBody일반적인 Spring MVC에서의 동작@RequestBody는 HTTP 요청의 body를 객체로 매핑합니다.클라이언트가 보낸 JSON 데이터를 서버에서 객체로 역직렬화합니다.주로 POST, PUT 요청에서 사용되며, 클라이언트가 데이터를 body에 담아 전송합니다.예시 코드:@RestController@RequestMapping("/api/v1/blogs")public class B.. 2025. 3. 18. @JsonCreator 사용 📌 @JsonCreator 어노테이션의 역할@JsonCreator는 Jackson 라이브러리에서 JSON 데이터를 객체로 변환할 때(역직렬화) 생성자를 통해 매핑할 수 있도록 도와주는 어노테이션입니다.즉, 클라이언트에서 JSON 요청이 들어올 때 해당 생성자를 사용해서 객체를 만들도록 지정하는 역할을 합니다.📌 @JsonCreator를 사용하는 이유✅ 1. 기본 생성자가 없거나, final 필드가 있는 경우MemberRegisterRequest 클래스의 모든 필드는 final로 선언되어 있기 때문에 Setter가 없음기본 생성자 없이 Jackson이 자동으로 필드를 매핑할 수 없으므로 @JsonCreator를 사용하여 특정 생성자를 통해 객체를 생성하도록 함✅ 2. JSON의 키 값과 객체 필드명이 .. 2025. 3. 18. MSA에서 Security는 어디에 적용해야 할까? ✅ 결론: 보안 수준과 요구사항에 따라 다르지만, 보통 게이트웨이와 백엔드에 적용!MSA(Microservices Architecture)에서 보안(Security)을 적용하는 방식은 각 계층의 역할에 따라 달라집니다.일반적으로 보안 적용이 필요한 곳은 API Gateway와 백엔드 서비스입니다.API Gateway: 인증(Authentication) 및 인가(Authorization) 처리백엔드 서비스: 개별 서비스 보안 관리프론트엔드: 주로 OAuth 토큰 관리, 로그인 UI 제공Eureka: 보통 보안 적용하지 않음📌 MSA 구조별 Security 적용 방식계층보안 적응 필요 여부보안 역할프론트엔드 (React, Vue 등)❌ 선택적로그인 UI, JWT 저장 (쿠키/로컬스토리지)API Gatewa.. 2025. 3. 18. Eureka에 프론트엔드 등록 여부 – 꼭 등록해야 할까? ✅ 결론: 프론트엔드는 꼭 Eureka에 등록할 필요 없음!Eureka는 주로 백엔드 서비스 간의 통신을 위한 서비스 디스커버리 역할을 합니다.프론트엔드(React, Vue, Angular 등)는 Eureka에 등록하지 않아도 동작 가능하며,보통 게이트웨이(Gateway)를 통해 백엔드 서비스와 통신하는 방식이 일반적입니다.📌 프론트엔드를 Eureka에 등록하는 이유는?✅ Eureka에 프론트엔드를 등록하면,✅ FeignClient 또는 Load Balancer를 통해 다른 서비스와 통신 시 서비스 이름만 사용 가능즉,frontend-service를 Eureka에 등록하면FeignClient에서 http://frontend-service 로 접근 가능👉 하지만 프론트엔드는 보통 사용자의 웹 브라우저에.. 2025. 3. 18. MSA 환경에서 프런트 엔드를 위한 서버구조 질문 : 원래 msa를 만들때 프런트에서 컨트롤 - 서비스 - 어댑터 구조로 클래스 명칭을 나누는 게 룰인거야?? 백엔드쪽 컨트롤러 - 서비스 - 레포지토리의 구조처럼 말이야. 좋은 질문입니다. 결론부터 말씀드리면, 반드시 정해진 규칙(룰)은 아니지만, MSA 환경에서 프런트엔드 요청을 처리하는 API Gateway나 프런트엔드 서버를 구현할 때는 주로 다음과 같은 구조를 많이 사용합니다.1. 일반적인 백엔드 구조 (Controller-Service-Repository)일반적인 백엔드 애플리케이션의 구조는 다음과 같습니다.Controller: HTTP 요청을 받아서 서비스 계층으로 전달Service: 비즈니스 로직 처리Repository: 데이터베이스 접근 및 CRUD 작업이 구조는 전통적인 모놀리식(M.. 2025. 3. 18. Controller 와 FeignClient에서의 @PathVariable 역할 프런트 단에서 게이트웨이로 FeignClient로 호출할 때 url에 적은 id를 FeignClient로 전달하고 싶은데 도대체 어떻게 전달해야하는지 모르겠네 현재 코드에서 FeignClient를 통해 URL의 PathVariable을 전달하려면 FeignClient 인터페이스의 메소드에도 @PathVariable을 명시적으로 선언해야 합니다. 다음과 같이 수정하면 됩니다.수정 전 코드@FeignClient(name = "apigateway-service", url = "http://localhost:8000")public interface GatewayFeignClient { @GetMapping("/my-blog") String getMyBlogData();} 수정 후 코드@FeignCli.. 2025. 3. 17. FeignClient 📌 FeignClient를 사용하는 이유FeignClient를 사용하는 이유가 프런트쪽에서 api를 호출하면 FeignClient를 사용해서 프런트에 설정한 api만으로 서버내부에 존재하는 api를 자동으로 호출할 수 있으니까 사용하는거지?? 네, 맞습니다! 🎯FeignClient를 사용하는 이유는 정확히 말씀하신 대로, 프런트엔드 또는 외부에서 설정된 API만 호출하면, FeignClient가 내부적으로 서버 내에 존재하는 다른 API를 자동으로 호출하고 데이터를 처리할 수 있기 때문입니다.📌 다시 정리하면:FeignClient의 역할:프런트엔드(또는 클라이언트)가 호출한 API 요청을 받아, 내부적으로 다른 서버(API)로 요청을 전달.개발자가 직접 HTTP 요청 코드를 작성하지 않아도, Fei.. 2025. 3. 17. 이전 1 2 3 4 ··· 10 다음