Backend/Spring


이번 포스팅에서는 스프링의 프레임워크로서의 핵심 작동 원리인 의존성 주입(DI) 및 제어의 역전(IoC) 및 Bean에 대해서 살펴볼 것이다. 다룰 내용은 아래와 같다. 의존성 주입 (DI), 제어의 역전(IoC)의 개념 Spring Boot에서 Bean을 등록하는 방법 2-1. Configuration + Bean 2-2. Component Spring Boot에서 의존성 주입(DI)을 수행하는 방법들 Autowired 생성자 주입 RequiredArgsConstructor Qualifier와 Primary 1. 의존성 주입 (DI), 제어의 역전(IoC)의 개념 DI (Dependency Injection, 의존성 주입) 객체가 의존하는 다른 객체를 직접 생성하는 것이 아닌 외부로부터 받는 것을 뜻한..


이번 포스팅에서는 Spring Boot에서 Request로 Multipart 형식의 File을 받아, 서버 내부 스토리지에 저장하는 방법과, 스토리지에 저장된 파일을 Response로 출력하는 과정을 다루어보도록 하겠다. 업로드 파일 저장 디렉터리 생성 ▶ Application.java @SpringBootApplicationpublic class WisefeeApplication { @Value("${upload.directory}") private String uploadDirectory; public static void main(String[] args) { SpringApplication.run(WisefeeApplication.class, args); } @PostConstruct pub..


이전 포스팅에서 Spring Boot에서 JWT를 이용한 로그인 인증과 인가를 구현하였다. 프로젝트 진행에 따라서 유저가 로그인 했을 때의 모바일 기기의 Firebase Token을 저장하여(휴대폰 기기를 식별해주는 토큰이라고 생각하면 됨), Notification Server를 통하여 해당 기기에 푸시 알림 요청을 날려야 하는 로직을 개발할 필요가 생겼다. 따라서 로그인 시 발급된 JWT와 함께 Firebase Token을 저장해야 한다고 생각했다. 유저가 어떤 다른 API 요청을 했을 때, Firebase 푸시알림을 보내야 한다면, Redis에서 Token을 꺼내어 푸시알림을 보낼 수 있도록 인증정보(JWT)와 FCM Token를 Redis를 저장하는 과정을 작성해보려고 한다. 이번 포스팅에서는 Sp..


이전 포스팅에서 Spring Boot에서 JWT를 이용한 로그인 인증을 구현하였다. 이번에는 로그인한 사용자에 한해서 API 사용을 승인하는 API 인가(Authorization), 더불어 권한별로 인가를 구현하는 방법을 알아보도록 하겠다. JWT 토큰 인증 방식에 대해서는 아래의 포스팅을 참고하면 좋을 것 같다. https://sjh9708.tistory.com/46 [Web] 인증과 인가 - JWT 토큰 인증 앞 포스팅에서 세션 방식의 인증과, 성능 개선을 위한 방법들에 대해서 다루어 보았었는데 이번에는 언급했던 토큰 인증 방식에 대해서 알아보려고 한다. 토큰 인증 세션 인증 방식과 달리 인증 sjh9708.tistory.com Spring Security JWT 인증과 인가 - (1) 회원 가입 h..


이번 포스팅에서는 Spring Boot에서 JWT를 이용한 로그인 인증을 구현해보도록 하겠다. JWT 토큰 인증 방식에 대해서는 아래의 포스팅을 참고하면 좋을 것 같다. https://sjh9708.tistory.com/46 [Web] 인증과 인가 - JWT 토큰 인증 앞 포스팅에서 세션 방식의 인증과, 성능 개선을 위한 방법들에 대해서 다루어 보았었는데 이번에는 언급했던 토큰 인증 방식에 대해서 알아보려고 한다. 토큰 인증 세션 인증 방식과 달리 인증 sjh9708.tistory.com Spring Security JWT 인증과 인가 - (1) 회원 가입 https://sjh9708.tistory.com/83 [SpringBoot] Spring Security JWT 인증과 인가 - (1) 회원 가입 ..


이번 포스팅에서는 Spring Boot에서 JWT를 이용한 인증과 인가를 다루기 이전, 사용자를 회원가입시키는 API 로직을 작성하고, 비밀번호를 해시처리하는 작업을 우선적으로 진행해보도록 하겠다. JWT 토큰 인증 방식에 대해서는 아래의 포스팅을 참고하면 좋을 것 같다. https://sjh9708.tistory.com/46 [Web] 인증과 인가 - JWT 토큰 인증 앞 포스팅에서 세션 방식의 인증과, 성능 개선을 위한 방법들에 대해서 다루어 보았었는데 이번에는 언급했던 토큰 인증 방식에 대해서 알아보려고 한다. 토큰 인증 세션 인증 방식과 달리 인증 sjh9708.tistory.com Spring Security란? 스프링 프레임워크 기반의 애플리케이션에서 보안과 인증을 처리하기 위한 모듈. Spr..


이번 포스팅에서는 API 문서 생성을 위해서 Swagger를 연동하는 방법을 알아보도록 하겠다. API 문서의 필요성 서비스의 개발은 기본적으로 팀단위로 이루어진다. 그리고 거의 대부분의 프로젝트들은 서버 백엔드 개발자들이 만들어둔 API를 사용하여 웹파트의 프론트엔드 개발자, 모바일이면 안드로이드, IOS 개발자, 그리고 그 외의 응용 프로그램 개발자들까지 서버의 비즈니스 로직과 데이터베이스의 접근을 위해서 API를 사용한다. 그런데 백엔드 개발자들이 일일이 API 사용법을 알려주기에는 비용적 측면에서 수지타산이 맞지 않다. 그래서 백엔드 개발자들은 API 개발과 함께 체계적인 문서를 다른 팀원들에게 제공해주어야 할 필요성이 있다. 가장 잘 알려진 문서화 도구들은 REST API 개발시에는 Swagge..


지금까지 포스팅에서는 H2 데이터베이스를 연결하여 사용했었는데, 이번에는 RDBMS의 종류인 MariaDB와 연결해보는 작업을 해보도록 하자. MariaDB 준비하기 ▶ docker-compose.yaml version: "3.7" services: wisefee-database: platform: linux/x86_64 #Mac M1칩 사용 제외하고는 주석처리 image: mariadb:10.11.2 environment: MYSQL_DATABASE: "wisefee-database" MYSQL_ROOT_PASSWORD: "1111" ports: - 3306:3306 volumes: - ./local-mariadb:/var/lib/mysql 필자는 MariaDB를 로컬에서 설치하지 않고 docker를..


이번 포스팅에서는 JPA 트랜잭션의 동시성을 제어하는 방법에 대해서 알아보겠다. 우선 작성한 상품 주문 로직에 대해서 살펴보겠다. 상품 주문 로직 작성 ▶ OrderService.java @Transactional public Long order(Long id, Long itemId, int count){ //엔티티 조회 Member member = memberRepository.findOne(id); Item item = itemRepository.findOne(itemId); //배송정보 생성 Delivery delivery = new Delivery(); delivery.setAddress(member.getA..