🌱 Spring

본 포스팅은 인프런 - 스프링 MVC 2편을 강의를 바탕으로 공부하고 정리한 글입니다. 이전 포스팅에서 세션을 사용한 로그인 처리를 알아보았다. 하지만, 로그인을 하지 않은 사용자도 URL(http://localhost:8080/itmes)을 직접 호출할 경우 상품 관리 화면에 들어갈 수 있다는 문제가 있다. 이를 해결하기 위해서는 상품 관리 컨트롤러에서 로그인 여부를 체크하는 로직을 하나하나 작성해줄 수 있지만, 향후 로그인과 관련된 로직이 변경될 때마다 작성한 모든 로직을 수정해야 한다는 번거로움이 있다. 어플리케이션 여러 로직에서 공통으로 관심이 있는 것을 공통 관심사(cross-cutting concern)라고 한다. 여기서는 등록, 수정 삭제, 조회 등등 여러 로직에서 공통으로 로그인 인증에 대..
본 포스팅은 인프런 - 스프링 MVC 2편을 강의를 바탕으로 공부하고 정리한 글입니다. 프로젝트 준비 로그인 요구사항 홈 화면 - 로그인 전 회원 가입 로그인 홈 화면 - 로그인 후 본인 이름 ( __님 환영합니다. ) 상품 관리 로그아웃 보안 요구사항 로그인 한 사용자만 상품에 접근하고, 관리할 수 있음 로그인 하지 않은 사용자가 상품 관리에 접근하면 로그인 화면으로 이동 회원 가입, 상품관리 패키지 구조 설계 hello.login domain item member login web item member login 구조 설계시 도메인이 가장 중요하다. 도메인은 시스템이 구현해야 하는 핵심 비즈니스 업무 영역을 말한다. 이때 web은 domain을 의존하지만 domain은 web을 의존하지 않도록 의존관..
본 포스팅은 인프런 - 스프링 MVC 2편을 강의를 바탕으로 공부하고 정리한 글입니다. 검증 기능을 매번 코드로 작성하는 것은 번거로운 일이다. 더욱 편리하게 검증을 하기 위해 검증 로직을 모든 프로젝트에 적용할 수 있도록 공통화 하고, 표준화 한 것이 Bean Validation이다. Bean Validation을 사용하면 검증에 대한 제약조건을 어노테이션에 넣어 사용할 수 있다. Bean Validation Bean Validation 2.0(JSR-380)이라는 기술 표준이다. 쉽게 말해 검증 어노테이션과 여러 인터페이스의 모음이다. Bean Validation을 구현한 기술 중 일반적으로 사용하는 구현체는 하이버네이트 Validator이다. ❗참고(하이버 네이트 Validator 관련 링크) - ..
Validation 클라이언트 검증 vs 서버 검증 컨트롤러의 중요한 역할 중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 검증은 클라이언트 측에서 진행할 수도 있고 서버 측에서 진행할 수도 있으며, 특징은 다음과 같다. 클라이언트 검증은 조작할 수 있기 때문에 보안에 취약하다 서버만으로 검증하면, 즉각적인 고객 사용성이 부족해진다. 따라서 둘을 적절히 섞어서 사용하되, 최종적으로 서버 검증은 필수이다. API 방식을 사용할 경우 API 스펙을 잘 정의하여 검즈 오류를 API 응답 결과에 잘 남겨줘야 한다. 예제 만들기 검증을 직접 구현해보며 검증에 대해 알아보도록 하자. 검증 요구사항 타입 검증 가격, 수량에 문자가 들어가면 검증 오류 처리 필드 검증 상품명 : 필수, 공백x 가격 : 1000원 ..
스프링에서 제공하는 기본 로그인 화면을 커스터마이징 하지 않고 그대로 사용하기에는 부족하다. 아이디와 비밀번호를 받아와 로그인 하는 기능은 할 수 있지만, 실제로 로그인에서 이 기능만 하지는 않는다. 그렇기 때문에 우리는 내가 원하는 로그인 화면을 Spring Security 로그인에 맞게 커스터 마이징 해서 사용해야 한다. Spring Boot + Security + Gradle을 사용한 로그인/로그아웃을 구현 시 어떻게 Spring Security 커스터 마이징 하는지 간단하게 알아보자. 의존성 추가 📁 Build.gradle implementation 'org.springframework.boot:spring-boot-starter-security' //spring security implement..
본 포스팅은 인프런 - 스프링 MVC 2편을 강의를 바탕으로 공부하고 정리한 글입니다. 타임리프는 스프링 부트에서 공식적으로 지원하는 뷰(View) 템플릿이다. JSP와 달리 Thymeleaf 문서는 html 확장자를 갖고 있어 JSP처럼 Servlet이 문서를 표현하는 방식이 아니기 때문에 서버 없이도 동작이 가능하다. 이번 포스팅에서는 타임리프 뷰 템플릿 사용법에 대해 간단히 알아볼 예정이다. 스프링 부트 설정 👉🏻 타임리프 라이브러리 추가 📂 build.gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' } 스프링 부트가 자동으로 ThymeleafViewResolver와 필요한 스프링..
본 포스팅은 인프런 - 스프링 MVC 1편을 강의를 바탕으로 공부하고 정리한 글입니다. 📢 본 포스팅에 앞서 예제를 위한 프로젝트를 생성하자. 더보기 📌 스프링 프로젝트 생성 스프링 부트 스타터를 이용해서 스프링 프로젝트를 생성해주도록 하자. 프로젝트 선택 Project: Gradle Project Language: Java Spring Boot: 2.6.x (정식버전 중 가장 최신 버전 선택) Project Metadata Group: hello Artifact: item-service Name: item-service Package name: hello.item-service Packaging: Jar Java: 11 Dependencies : Spring Web, Thymeleaf, Lombok 📌..
본 포스팅은 인프런 - 스프링 MVC 1편을 강의를 바탕으로 공부하고 정리한 글입니다. 로깅 운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해 로그를 출력한다. SLF4J, Logback 스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리(spring-boot-starter-logging)가 함께 포함되는데, 이 라이브러리는 기본적으로 내부에 다음 로깅 라이브러리를 사용한다. SLF4J : http://www.slf4j.org Logback : http://logback.qos.ch 로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 있는데, 그것을 통합해서 인터페이..
an2z
'🌱 Spring' 카테고리의 글 목록 (6 Page)