1. AOPAspect Oriented Programming, 관점 지향 프로그래밍공통 관심 사항 / 핵심 관심 사항을 분리시킴 2. Spring AOP스프링에서 제공하는 AOP 구현체공통 관심 사항을 모듈화(: 공통 로직, 기능 등을 하나의 단위로 묶는 것) 하여 관리할 수 있는 편의 기능 제공핵심 기능 : 코드 수정 없이 공통 기능을 추가하는 것!프록시 객체를 자동 생성함프록시 : 대리자라는 뜻클라이언트가 접근하는 실제 객체 (타겟 객체) 인 것처럼 위장 → 요청을 대신 받아줌또한 받은 요청을 바로 타겟 객체에게 넘겨주기 전 다양한 로직 추가 가능⇒ AOP 적용 후 : 프록시 객체가 (Dispatcher Servlet → 컨트롤러) 요청을 가로챔스프링 AOP 동작 흐름AOP : Dispatcher S..
Spring Boot
1. 유효성 검사사용자에게 입력받은 데이터가 기준에 부합한지 검사하는 과정임오류나 보안 문제 예방 가능⇒ 데이터 무결성 보장, 시스템 안정성 확보, 보안 유지 가능!스프링에서 주된 유효성 검사 방법Spring Validation + Bean ValidationSpring Validation : 유효성 검사 기능 (Bean Validation을 기반으로 작동)Bean Validation : 유효성 검사 API 2. Spring Validation스프링 프레임워크에서 제공하는 유효성 검사 기능Java Bean Validation API를 기반으로 유효성 검사!스프링 MVC와 통합되어 사용@Valid, @Validated 사용@Valid자바에서 지원 (JSR-303 자바 표준)메서드 인자 또는 클래스에 적용 ..
0. 템플릿 엔진템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어⇒ view (HTML) 와 데이터 로직 코드 (DB Connection) 을 분리!렌더링 주체에 따라 서버 사이드 템플릿 엔진, 클라이언트 사이드 템플릿 엔진으로 나뉨 0-1. 서버 사이드 템플릿 엔진서버에서 구동되는 템플릿 엔진서버에서 데이터를 미리 정의된 템플릿에 넣음 → HTML 생성해 클라이언트에 전달대표적) JSP, Thymeleaf, Velocity, Freemarker 등 0-2. 클라이언트 사이드 템플릿 엔진브라우저 위에서 동작하는 템플릿 엔진서버는 데이터만 전달 (JSON 등) → 클라이언트가 데이터를 템플릿에 넣어 화면 생성대표적) Mustache, Handlebars 등 1. Thymeleaf자바 템플릿..
1. Swagger 란 ?Rest API 를 쉽게 문서화, 관리 가능하게 해주는 오픈소스 프레임워크UI를 통해서 API를 직접 호출하고 테스트 가능백엔드-프론트엔드 간에 Swagger를 통해서 편리하게 커뮤니케이션 가능최근에는 Swagger 대신 OpenAPI 3.0 표준을 지원하는 springdoc-openapi-ui 라이브러리가 더 많이 사용됨 2. 프로젝트에 Swagger 적용 2-1. 예제 프로젝트회원 등록, 조회 (단건, 전체) 가능프로젝트 간소화를 위해서 DB에 연결하지 않고 단순히 ArrayList에 회원 저장아래에서 예제 프로젝트 코드 설명 2-1-1. User@Getter@AllArgsConstructorpublic class User { private Long id; priv..
1. 자동 로그인브라우저를 종료하고 다시 접속 시 따로 로그인하지 않더라도 자동으로 로그인 상태가 유지됨을 뜻함거의 모든 웹사이트의 로그인 화면에서 자동 로그인 기능을 찾아볼 수 있음 2. Remember Me스프링 시큐리티가 제공하는 로그인 상태 유지 기능서버가 유저의 정보와 토큰(Remember Me 토큰을 생성)을 쿠키 형태로 저장다음 접속 시, 서버는 쿠키에 저장된 토큰 확인 > 유효한 토큰이면 자동으로 로그인 처리함(세션이 만료되더라도 쿠키가 남아있어 자동 로그인이 가능한 것임)토큰이 유출될 가능성이 존재하므로 보안 강화가 중요할 것!로그아웃 시 자동으로 쿠키 삭제됨 3. 구현 방법 3-1. login.html로그인 유지 기능 활성화 할 체크박스 추가 로그인 유지 checkbox의..
0. 도메인 구매 이 게시글에서는 가비아 (https://www.gabia.com/) 에서 도메인을 구매하고 연결하는 방법 설명함 https://www.gabia.com 접속 후 원하는 도메인 이름 검색 > 구매 1. AWS Route 53 > 호스팅 영역 생성 AWS 접속 https://aws.amazon.com/ko/ 접속 > 로그인 route 53 검색 대시보드 > 호스팅 영역 생성 호스팅 영역 구성 설정 도메인 이름 : 구매한 도메인 주소 입력 설명 : 호스팅 영역을 구별하기 위한 설명 입력 (선택 사항) 유형 : 퍼블릭 호스팅 영역 2. 가비아 네임서버 설정 My가비아 > 서비스 관리 탭 클릭 구매한 도메인에 대해서 관리 클릭 하단의 네임서버 탭의 설정 클릭 네임서버 목록 > 호스팅명 기입 기입..
1. Whitelabel Error Page 스프링 부트가 기본적으로 제공하는 에러 페이지에 해당 구체적인 에러 페이지가 설정되지 않았을 때 Whitelabel Error Page가 나타나게 됨 2. HTTP Response Status Code (HTTP 응답 상태 코드) 서버가 클라이언트의 요청을 어떻게 처리했는지를 나타내는 코드 특정 범위에 따라 분류됨 1xx (정보) : 요청을 받았고 프로세스를 계속 진행함 2xx (성공) : 요청을 성공적으로 받음 3xx (리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요함 4xx (클라이언트 오류) : 클라이언트 쪽에 문제가 발생해서 요청을 거절함 5xx (서버 오류) : 서버 쪽에 문제가 발생해서 요청이 거절됨 대표적인 예시 200 OK : 요청이 성..
다양한 사이트에서 쉽게 볼 수 있는 회원가입 시 이메일 검증 스프링 부트로 사용자에게 메일 전송 기능 구현 1. 구글 Gmail SMTP 사용 위한 설정 구글 사이트 > 프로필 클릭 > Google 계정 관리 검색창에 > "앱 비밀번호" 검색 앱 이름 설정 > 만들기 16자리의 앱 비밀번호가 생성됨 2. build.gradle dependencies { // 메일 전송 위한 라이브러리 추가 implementation 'org.springframework.boot:spring-boot-starter-mail' // 예제에서 확인을 위한 타임리프 추가 (필요하지 않다면 넣지 않아도 됨) implementation 'org.springframework.boot:spring-boot-starter-thymele..