스프링21 9. 어플리케이션 만들기 1. 레이어별 컴포넌트애플리케이션 레이어클라이언트에서 받은 요청을 제어하고 도메인 레이어를 사용하여 애플리케이션을 제어합니다.Controller:요청을 처리에 매핑하고 결과를 뷰에 넘겨주는 제어를 수행합니다.주요 처리는 Controller 안에서 실행하지 않고 '도메인 레이어'의 Service를 호출합니다.Form:화면의 폼을 표현합니다. 화면에서 입력한 값을 Controller에 넘겨줍니다. 또한 Controller에서 화면에 결과를 출력할 때도 사용합니다. 도메인 레이어가 어플리케이션 레이어에 의존하지 않도록 Form에서 도메인 객체로 변환하거나 도메인 객체에서 Form으로 변환하는 것을 어플리케이션 레이어에서 수행해야 합니다.View:화면 표시를 담당합니다.도메인 레이어도메인 객체에 대해 어플리케이.. 스프링/스프링 프레임워크 첫걸음(구버전) 2025. 1. 12. 8. 유효성 검사 기능 알아보기 1. 유효성 검사유효성 검사(Validation)는 입력 내용이 조건에 만족하는지 그 타당성을 확인하는 입력 체크를 말합니다. 유효성 검사는 크게 두 개로 나뉩니다.단일 항목 검사상관 항목 검사(서로 관련이 있는 항목을 함께 체크하는 방법) 1.1 단일 항목 검사단일 항목 검사는 입력 항목 하나에 대해 설정하는 입력 체크 기능입니다. Form 클래스 등의 필드에 어노테이션을 부여해서 사용합니다.입력 체크를 위한 어노테이션은 JavaEE에서 제공하는 어노테이션(Bean Validation) 혹은 하이버네이트(Hibernate) 프레임워크에서 제공하는 어노테이션(Hibernate Validator)이 있습니다. 또 수치 입력 항목에 알파벳 등의 문자열을 입력 등의 '형변환 체크'는 입력 체크를 설정하는 것만.. 스프링/스프링 프레임워크 첫걸음(구버전) 2025. 1. 12. 7. 요청 파라미터 취득하기 1.요청 파라미터 종류서버에 전송되는 값을 요청 파라미터(Request Parameter)라고 한다. 스프링에서 요청 파라미터는 클라이언트가 서버로 데이터를 전달하는 데 사용되는 매개변수들을 의미한다. 다양한 종류의 요청 파라미터가 있으며, 주로 웹 개발에서 많이 사용되는 몇 가지를 아래에 설명한다.쿼리 문자열(Query String) 파라미터:설명: URL에 물음표(?) 뒤에 키-값 쌍으로 전달되는 파라미터로, 주로 GET 요청에서 사용된다.예시: https://example.com/api/resource?name=value&age=25활용: 검색 기능, 필터링, 정렬 등에 주로 사용된다.폼 데이터(Form Data)설명: HTML 폼을 통해 전송되는 데이터로, 주로 POST 요청에서 사용된다.예시: .. 스프링/스프링 프레임워크 첫걸음(구버전) 2025. 1. 12. 6. 템플릿 엔진 알아보기 1. 템플릿 엔진뷰는 사용자에게 보여줄 내용을 처리 결과 데이터를 가지고 HTML을 생성해서 클라이언트에 응답을 알려주는 역할을 한다. 템플릿 엔진에 대해 간단하게 설명하면 '데이터를 미리 정의된 템플릿에 바인딩해서 뷰의 표시를 도와주는 것'이다.바인딩이란 어떤 요소나 데이터, 파일 등을 서로 연결하는 것을 의미한다. 2. 타임리프HTML 기반의 템플릿 엔진으로, 정해진 문법으로 작성하면 페이지를 동적으로 구현할 수 있다.HTML을 기반으로 하기 때문에 최종 출력을 생각하면서 뷰를 생성할 수 있다.즉, 타임리프를 사용하면 디자이너와 쉽게 분업할 수 있다.타임리프에 대해 학습하기 전에 반드시 기억해야 할 것은 모델이다.스프링 MVC가 요청을 받고 응답을 보낼 때까지의 흐름에 대해 다시 한 번 복습하고 진행.. 스프링/스프링 프레임워크 첫걸음(구버전) 2025. 1. 12. 5. MVC 모델 알아보기 1. MVC 모델MVC 모델은 '프로그램의 처리 역할을 나누어서 프로그램을 작성하는 방법'으로 웹 시스템 개발에 자주 사용되고 있다.역할은 모델(M, Model), 뷰(V, View), 컨트롤러(C, Controller)의 세 종류로 분류한다.1.1 모델모델은 시스템에서 비즈니스 로직(Business Logic)을 담당한다. '비즈니스 로직'이라는 단어는 '시스템의 코어 부분' 혹은 '시스템의 목적을 처리하는 부분' 등을 나타낸다.비즈니스 로직을 회원 가입할 때의 상황에 비유하면 사용자가 입력한 아이디의 중복 확인, 본인 인증, 비밀번호 규칙 확인 등이 필요할 것이다. 이 중에서 아이디 중복 확인의 로직을 생각해보면 우선 사용자가 입력한 아이디 값을 메모리에 저장하고 회원 데이터베이스에서 동일한 아이디가.. 스프링/스프링 프레임워크 첫걸음(구버전) 2025. 1. 12. 4. 데이터베이스 작업 1. 리포지토리리포지토리는 간단하게 말하면 데이터베이스를 조작하는 클래스이다. 리포지토리를 생성하는 경우에는 반드시 인터페이스를 정의하고 구현해야 한다. 그 이유는 리포지토리 인터페이스의 필드에 리포지토리 구현 클래스를 DI하여 특정 구현에 의존하는 것을 피할 수 있기 때문이다.자바에서는 인터페이스를 구현한 클래스의 접미사에 'Impl'을 붙이는 경우가 많다.(Impl: implements의 약자)2. 스프링 데이터 JDBC2.1 O/R 매퍼O/R 매퍼(Object-Realiational Mapper)를 간단한게 설명하면, 애플리케이션에서 사용하는 객체(O, Ojbect)와 릴레이션(R, Relational)의 데이터를 매핑하는 것이다. 조금 더 자세하게 설명하면 O/R 매퍼는 미리 설정된 객체와 관계형.. 스프링/스프링 프레임워크 첫걸음(구버전) 2025. 1. 12. 3. 스프링 프레임워크의 핵심 기능 1. 의존성 주입의존성 주입(DI, Dependency Injection)는 '의존하는 부분을 외부에서 주입하는 것'을 의미한다. 지금은 이정도로 이해해도 충분하다. 2. 의존성자바에서 의존성은 여러 형태가 있다. 대표적으로 new 키워드로 클래스의 인스턴스를 생성하는 방법이 있다. 예를 들어, 어떤 프로그램에 '사용하는 객체' A 클래스와 '사용되는 객체' B 클래스가 있다고 가정하자. A 클래스에서 B 클래스를 사용하려면 new 키워드를 이용해 B 클래스의 인스턴스를 생성하고, B 클래스의 메서드를 사용하게 된다. 이때 B 클래스에서 구현했던 메서드를 변경하면 그 영향으로 A 클래스에서도 해당 메서드를 변경해야 한다. 이러한 관계를 'A 클래스는 B클래스에 의존한다'라고 한다. 의존에는 클래스 의존(.. 스프링/스프링 프레임워크 첫걸음(구버전) 2025. 1. 11. 2. 자바 기초 지식 복습 1. 인터페이스(Interface)인터페이스(Interface)는 클래스에 포함하는 메서드의 구체적인 내용을 작성하지 않고 상수와 메서드 타입만 정의한 것을 의미한다. 자바에서 인터페이스는 다음과 같은 특징을 갖는다. 추상 메서드인터페이스 내의 메서드는 구현 내용 없이 메서드 시그니처만을 정의하위 클래스에서 반드시 구현해야 함다중 상속자바에서 클래스는 다중 상속을 지원하지 않지만, 여러 인터페이스 구현이 가능클래스는 여러 인터페이스에서 정의한 메서드를 모두 구현이 가능계약(Contract)클래스가 어떤 메서드를 반드시 제공해야 한다는 계약(Contract)을 정의클래스가 특정 인터페이스를 상속하면 해당 인터페이스의 메서드를 반드시 구현해야 함인터페이스 상속인터페이스도 다른 인터페이스로부터 상속이 가능여러.. 스프링/스프링 프레임워크 첫걸음(구버전) 2025. 1. 11. 1. 스프링 프레임워크 개요 1. 프레임워크란?프레임워크(Framework)- 소프트웨어나 애플리케이션 개발을 간단하게 해주는 뼈대 프레임워크의 장점개발에 필요한 최소한의 기능을 제공애플리케이션 개발에 필요한 시간과 비용 최소화 프레임워크의 단점프레임워크 고유의 사용 방법에 대한 이해 2. 스프링 프레임워크란?스프링 프레임워크(Spring Framework)자바 개발 환경에서 사용되는 프레임워크동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공 스프링 프레임워크 구성 스프링 부트(Spring Boot)- 스프링 애플리케이션을 복잡한 설정 없이 빠르게 작성하는 기능을 제공 스프링 프로젝트스프링 MVC(Spring MVC): 웹 애플리케이션을 간단하게 생성하는 기능을 제공스프링 데이터(Spring Data): 데이터 접근에 관한.. 스프링/스프링 프레임워크 첫걸음(구버전) 2025. 1. 11. 스프링(Spring): 스프링 부트로 이메일 인증 구현하기(feat. docker, redis, SMTP, IMAP, POP3) 1. 배경오늘날 회원 가입에서 휴대전화번호 혹은 이메일 인증 그리고 서드 파티 애플리케이션 인증을 흔하게 볼 수 있다. [회원, 인증] 도메인 담당한 경험이 있다면 언급한 세 가지 인증 수단 중에서 한 가지를 공부하거나 구현한 경험이 있을 것이라고 생각이 든다. 가장 흔한 인증 방식인 서드 파티 애플리케이션을 활용한 로그인 방식은 책 혹은 강의에서 흔하게 공부할 수 있다. 대표적인 서드 파티 애플리케이션은 카카오톡 인증 서비스가 있다. 스마트폰 앱과 웹 페이지 모두 제공해야 하는 서비스에서 서드 파티 애플리케이션 인증은 무상태(Stateless)를 준수하기 위한 최소한의 환경이기 때문에 탁월한 선택이라고 생각이 든다.(지금까지 경험으로 Stateless를 완벽하게 만족하는 것은 어려운 것으로 보인다.) .. 스프링/개인 정리 2024. 8. 6. 스프링(Spring) DTO, Service에서 유효성 검사: @NotBlank, @Pattern, @Size(feat. Validation, @Email, @NotEmpty) 1. 유효성 검사 시점DTO 레코드 타입을 작성하다가 유효성 검사를 어느 시점에 수행해야 가장 최적인지 고민하면서 공부한 내용을 정리한 글이다. 좀 더 구체적인 고민하게 된 배경을 살펴보고 유효성 검사에 대표적인 어노테이션들에 대해 학습한다. 클라이언트가 회원 가입에 필요한 정보를 포함하여 서버로 요청을 보내는 시나리오에서 생긴 고민이다. 해당 시나리오의 프로젝트는 계층형 아키텍처(Layerd Architecture) 구조로 Controller, Service, Repository, Model로 구성되어 있다. 이러한 계층형 아키텍처 구조에서 클라이언트로부터 받은 요청 데이터에 대해 유효성 검사를 어느 시점에, 어떻게 작성해야 가장 적절한지 고민하게 됐다. 2. DTO와 Service에서 유효성 검사결론.. 스프링/개인 정리 2024. 7. 31. JWT(JSON Web Token): JWT 로그아웃 구현하기(Feat. Stateless) 0. 시작하기 전에 JWT(JSON Web Token): (이론) JWT 그리고 스프링 부트 적용하기0. 시작하기 전에강의 혹은 책에서 흔하게 JWT 토큰과 함께 OAuth2.0 을 함께 사용하여 네이버, 카카오, 구글, 애플 등 서드파티 애플리케이션에게 인증을 위임한다. 아쉽지만 현재 프로젝트에서는 Olimdae94.tistory.com지난 JWT 이론을 공부하면서 정리한 글이다. JWT 에 대해 자세한 내용을 정리했기 때문에 구체적인 설명은 해당 링크에서 공부할 수 있다. JWT(JSON Web Token)는 클라이언트와 서버 간의 정보를 안전하게 전송하기 위해 사용되는 JSON 기반의 토큰으로 문자열이다. JWT의 주요 특징은 다음과 같다. 1. 무상태성(Stateless)JWT 안에는 정보가 들어.. 스프링/시큐리티 2024. 7. 13. 이전 1 2 다음