Spring

1. 스프링 MVC 전체 구조저번 섹션에서 직접 만든 MVC 프레임워크와 스프링 MVC 구조를 비교해보자.전체적으로 보면 구조가 매우 비슷하다. 객체들 이름만 바꾸고, 기능을 확장하면 거의 똑같이 볼 수 있다.FrontController → DispatcherServlethandlerMappingMap → HandlerMappingMyHandlerAdapter → HandlerAdapterModelView → ModelAndViewviewResolver 메서드 → ViewResolver InterfaceMyView class→ View Interface DispatcherServlet 구조 살펴보기스프링 MVC도 프론트 컨트롤러 패턴으로 구현돼 있다. 그 프론트 컨트롤러가 바로 DispatcherServ..
이전엔 단순하고 실용적인 MVC 프레임워크를 만들었다. [스프링 MVC 1편] (4) MVC 프레임워크 만들기 - 1이전에 서블릿을 Controller로, JSP를 View 화면 렌더링용으로 사용하는 MVC 패턴을 도입했었다. [스프링 MVC 1편] (3) 서블릿, JSP, MVC 패턴1. 서블릿으로 회원 관리 웹 애플리케이션 만들기회원 관리 웹dev-meung.tistory.com 이번 섹션에선 어댑터라는 개념을 추가해 스프링 MVC를 더 자세하게 이해해 본다. 1. 유연한 컨트롤러 (v5) - 1어댑터 패턴만약 어떤 개발자는 ControllerV3 방식으로 개발하고 싶고, 어떤 개발자는 ControllerV4 방식으로 개발하고 싶다면 어떻게 해야 할까?public interface Controller..
이전에 서블릿을 Controller로, JSP를 View 화면 렌더링용으로 사용하는 MVC 패턴을 도입했었다. [스프링 MVC 1편] (3) 서블릿, JSP, MVC 패턴1. 서블릿으로 회원 관리 웹 애플리케이션 만들기회원 관리 웹 애플리케이션 요구사항이번 섹션에선 회원 정보(이름, 나이)를 저장하고 조회하는 비즈니스 로직을 가진 웹 애플리케이션을 간단dev-meung.tistory.com 이번 섹션에선 MVC 패턴을 사용하면서 발생하는 문제점을 개선한 MVC 프레임워크를 서블릿을 통해 차근차근 만들어 볼 예정이다. 단계별로 프레임워크를 만들고 나면 나중에 스프링 MVC의 구조를 이해하는 데 훨씬 도움이 된다. 1. 프론트 컨트롤러 패턴 소개프론트 컨트롤러를 도입하기 전엔 요청이 올 때마다 각각 공통 로..
1. 서블릿으로 회원 관리 웹 애플리케이션 만들기회원 관리 웹 애플리케이션 요구사항이번 섹션에선 회원 정보(이름, 나이)를 저장하고 조회하는 비즈니스 로직을 가진 웹 애플리케이션을 간단하게 만들어 본다. 최대한 스프링 없이 순수 서블릿만으로 구현하는 것이 목적이다.스프링은 톰캣을 띄울 때만 사용한다. Member Entity와 Repository를 생성한  save(), findById(), findAll(), storeClear() 등의 메서드와 필드(username, age)를 구현하고 간단하게 Test까지 진행한다.MemberRepository에서 JPA를 사용하지 않는다면 HashMap으로 id와 Member를 저장하는 방식을 사용할 수 있다. 이때 HashMap을 사용하면 동시성 문제가 발생할 ..
1. Hello 서블릿프로젝트 환경Java: 21Spring Boot: 3.x.xDependencies: Spring Web, LombokPackaging: War → 주의: JSP를 실행하기 위해서 Jar 대신 War로 설정해야 한다.프로젝트를 생성한 뒤 [File - Setting]에서 [Annotation Processors]를 검색하고, Enable annotation processing 체크 (재시작)임의의 테스트 class를 만들고 @Getter 확인아래 사이트에서 OS에 맞는 Postman 다운로드 받고 설치하기 Download Postman | Get Started for FreeTry Postman for free! Join 30 million developers who rely on P..
1. 현업에서 EC2에 Redis를 설치해서 쓰지 않고 ElastiCache를 쓰는 이유예시EC2에 MySQL을 직접 설치해서 DB 서버처럼 써도 괜찮지만, 직접 MySQL을 깔고 이것저것 설정하는 것보단 AWS RDS 서버(AWS에서 세팅해 놓은 DB 서버)를 사용하는 게 여러 가지 부가 기능도 사용할 수 있고 안정성도 높다. 현업에서 EC2에 Redis를 설치해서 쓰지 않고 ElastiCache를 쓰는 이유도 비슷하다. 현업에서 EC2에 Redis를 직접 설치하는 경우는 드물다. 일일이 Redis를 설치하고 세팅하고 관리하면서 확장까지 하려면 신경 쓸 게 생각보다 많다. 그러나 ElastiCache를 사용하면 세팅이나 확장을 쉽게 할 수 있고, 기본적인 모니터링 기능도 제공해 주며 장애가 날 가능성도..
1. Docker Compose로 Redis, Spring Boot 한 번에 띄울 수 있게 구성하기구성에 필요한 파일 만들기a. Dockerfile17-jdk에서 빌드한 파일을 복사해 실행시키는 Docker 이미지FROM openjdk:17-jdkCOPY build/libs/*SNAPSHOT.jar app.jarENTRYPOINT ["java", "-jar", "/app.jar"] b. compose.ymlDockerfile을 기준으로 서버를 빌드함 (포트는 8080)캐시 서버(Redis)가 정상적으로 실행되고 있다는 걸 확인한 뒤에 백엔드 서버를 띄울 것임 (캐시 서버가 안 띄워져 있으면 오류 표시)services: api-server: build: . ports: - 8080:8..
EC2, RDS, Spring Boot, Redis를 활용한 아키텍처 구성은 아래와 같다.  1. EC2 생성서울 리전으로 맞추기 & 인스턴스 시작 버튼 클릭 인스턴스 이름 설정 애플리케이션 및 OS 이미지 → Ubuntu (버전 24.04)로 설정 인스턴스 유형은 t3a.small 이상으로 생성할 것을 권장함프리티어인 t2.micro에서 Spring Boot, Redis를 다 돌리기엔 성능이 모자라기 때문에 중간에 EC2가 멈춰버리기도 함 원래는 키페어를 생성해서 셋팅을 해야 하지만, Redis만 연결시켜 보고 테스트 후 바로 종료시킬 것이기 때문에 [키 페어 없이 계속 진행(권장되지 않음)]을 선택서비스를 하는 입장이라면 키 페어를 만드는 걸 추천 네트워크 설정 → 편집 클릭VPC는 기본값 그대로 셋..
앞에 이메일 인증 요청과 인증 코드 확인까지 완벽하게 성공한 줄 알았는데, 나중에 로그인 기능을 구현할 때 계속해서 인증이 막혔었다. 분명 코드도 잘 짜놨고 제대로 이해했다고 생각했는데 같은 오류가 반복돼서 멘붕이 왔었던 것 같다. 오류 1BadCredentialException: 자격 증명에 실패하였습니다.로그인에 필요한 기능들을 공부하고 API를 구현했다면 좋았겠지만... 구현 기한이 정해져 있기도 했고 공부할 시간이 부족해서 다른 사람들의 코드를 참고하면서 구현했다. 계속되는 오류에 코드를 갈아엎을까 고민했지만 로그인 구현은 문제가 없다고 생각해서 내가 기존에 작성한 코드에서 문제가 생기는 건 아닐지 확인하기로 했다.org.springframework.security.authentication.Ba..
7.18(목) 백엔드 회의에서 API 명세서를 바탕으로 역할 분배를 했다. 어떻게 나눌까 하다가 최대한 동시에 작업할 수 있도록 도메인 별로 5~7개 정도씩 나눴고, 나는 그중에서 회원 도메인을 담당하게 됐다. 크게 보면 회원가입과 로그인, 로그아웃, 회원 정보 조회 API를 구현해야 했다. 소셜 로그인(애플)에서 이메일 인증 방식을 사용한 회원가입으로 바꾸기로 해서 구글과 GitHub에 관련된 내용을 검색해 봤다. 이미 로그인을 구현해 본 제아가 공유해 준 본인의 블로그 글도 참고하면서 진행했다. 개발 환경은 아래와 같다.Java 17Spring Boot 3.3.1GradleIntelliJ(IDE)MySQL(Main DB), Redis(Sub DB) Redis보통 이메일 인증 방식을 사용할 때 인증 코..
dev-meung
'Spring' 태그의 글 목록 (4 Page)