프로젝트 (Java)

상품 도메인 설계 Item 모든 상품의 기본이 되는 추상 클래스입니다. @Inheritance(strategy = InheritanceType.SINGLE_TABLE)을 사용하여 단일 테이블 상속 전략을 채택합니다. 상품의 공통 속성 및 메소드를 정의합니다. @Entity @Getter @Table(name = "items") @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "type") @NoArgsConstructor @SuperBuilder public abstract class Item { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) privat..
마이크로서비스 아키텍처에서 특정 사용자 역할(예: 관리자)에 대한 접근 제어는 보안과 서비스의 무결성을 유지하는 데 필수적입니다. Spring Security를 활용하여 관리자 역할을 가진 사용자만이 특정 URL에 접근할 수 있도록 설계할 수 있습니다. SecurityConfig 설정 SecurityConfig 클래스에서 HTTP 요청에 대한 보안 규칙을 정의하여, /api/users 경로에 대한 GET 요청은 ROLE_ADMIN 권한을 가진 사용자만이 접근할 수 있도록 설정합니다. 이를 통해 관리자만 사용자 목록을 조회할 수 있습니다. http .authorizeRequests() .antMatchers(HttpMethod.GET, "/api/users").hasAuthority("ROLE_ADMIN"..
Order 모듈 구성 build.gradle Order 모듈에 필요한 의존성을 정의합니다. 여기에는 Spring Boot 웹 스타터, 시큐리티 스타터, 그리고 공통 기능을 담당하는 myshop-core 모듈이 포함됩니다. project(':myshop-order') { dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-security' implementation project(':myshop-core') } } OrderApplication 스프링 부트 애플리케이션의 메인 클래스로서, 애플리케이션을 구동..
API Gateway의 추가는 마이크로서비스 아키텍처에서 중요한 구성 요소입니다. 모든 외부 요청을 단일 진입점을 통해 라우팅하고, 서비스 간의 통신을 관리하여 보안, 모니터링, 부하 분산 등의 기능을 제공합니다. Spring Cloud Gateway를 사용한 API Gateway 구현은 이러한 목적을 달성하기 위한 효과적인 방법입니다. API Gateway 모듈 설정 API Gateway 모듈은 build.gradle 파일에 Spring Cloud Gateway와 Eureka Client의 의존성을 추가하여 설정합니다. 이를 통해 Eureka Server에 등록된 서비스의 인스턴스 정보를 활용해 동적으로 라우팅 규칙을 적용할 수 있습니다. plugins { id 'java' } group = 'org...
Eureka Server의 추가는 마이크로서비스 아키텍처에서 서비스 디스커버리를 관리하는 핵심 요소입니다. Eureka Server를 사용하면 각 마이크로서비스가 실행될 때 자신의 정보(예: IP 주소, 포트)를 Eureka Server에 등록하고, 다른 서비스의 위치 정보를 조회할 수 있습니다. 이를 통해 서비스 간의 탄탄한 연결과 유연한 서비스 관리가 가능해집니다. Eureka Server 설정 Eureka Server를 설정하기 위해 build.gradle 파일에 필요한 의존성을 추가하고, EurekaServerApplication 클래스에 @EnableEurekaServer 어노테이션을 사용하여 Eureka Server로의 기능을 활성화합니다. build.gradle plugins { id 'ja..
배경 이번 과제는 NewsFeed 기능 개발이었는데, 사용자가 팔로잉하는 다른 유저들의 활동 알림과 게시물을 출력하는 로직을 구현하는 것이 목표였다. 구현 과정에서 Post 모듈과 NewsFeed 모듈 간의 데이터 교환에 있어서 응답 데이터가 null로 반환되는 문제에 부딪혔다. 문제 상황 NewsFeed 서비스는 사용자가 팔로잉하는 유저 목록을 Post 모듈에 전달하고, 해당 유저들의 게시글 목록을 받아 출력하는 구조로 설계했다. 아래는 NewsFeed 서비스의 핵심 로직이다. NewsFeedService WebClient를 사용하여 Post 모듈에 followingIds(팔로잉 유저 목록)를 전달하고, 게시물 목록을 받아온다. @Transactional(readOnly = true) public Li..
hihyuk
'프로젝트 (Java)' 카테고리의 글 목록 (3 Page)