Spring

시작하기 전 ... 기존 프로젝트 구조는 항상 Controller.java - Service.java - DAO.java - Mapper.xml 의 구조를 사용하였으며 DAOImpl의 구현 클래스에서 @Repository 어노테이션을 사용하여 해당 클래스가 Database와 통신하는 클래스임을 약속하였다. 하지만, Controller.java - Service.java - Mapper.java - Mapper.xml의 구조가 될 수도 있음을 알게되었다. 그럼 언제 어떻게 사용하는지, 무엇이 다른지 살펴보자! Goal Mybatis를 사용하는 이유를 이해한다. @Repository vs @Mapper 언제, 왜 사용하고 어떻게 다른지를 이해한다 각각의 Layer 프레젠테이션 계층 (Presentation ..
Goal 요청데이터와 응답데이터 및 HTTP 상태코드를 디자인 해보자 API를 디자인 했으니, 해당 API가 작동시 요청 데이터와 응답데이터를 미리 디자인 해보자! HTTP 상태코드란 ? 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능이다 자세한 내용은 아래 포스팅 참고! https://dev-rosiepoise.tistory.com/123 [네트워크] HTTP 상태코드 (2xx - 성공, 3xx - 리다이렉션, 4xx - 클라이언트 오류, 5xx - 서버 오류) Goal HTTP 상태코드에 대해서 알아본다 2xx 성공코드에 대해 알아본다 3xx 리다이렉션 코드에 대해 알아본다 PRG post redirect get 에 대해 알아본다 4xx 클라이언트 오류에 대해 알아본다 5xx 서버 오류에..
· Spring/mvc
시작하기 전 ... 이미 누군가가 만들어 놓은 환경이나 세팅되어 있는 상태에서 '왜'라는 질문 없이 당연하게 받아들이면, 내가 그 상황에 놓여있을 때 정확하게 인지하지 못하면 그건 결국 '알고있다'라고 할 수 없으므로,, 이번 포스팅을 시작한다!! Goal Spring mvc에서 컨트롤러의 리턴타입에 대해서 알아본다. Restful에 대해 알아본다. 리턴타입의 종류 String void 객체 타입 ResponseEntity 스프링의 모델 객체 ModelAndView vs Model vs ModelMap Map View @ResponseBody String Spring + View template을 사용할 때 흔히 사용하는 타입 @GetMapping("/test") public String test(Mod..
Goal 요구사항에 부합하는 API desgin을 해보자 API desgin란? 1. 심플하고 직관적으로 만들기 REST API를 URL만 보고도, 직관적으로 이해할 수 있어야 한다 /boards /boards/1234 2. 동사보다 명사 사용하기 ( http method를 사용해서 구분) 행위를 URL에 사용하지 않기 ex. getBoardList, registBoard 리소스 POST GET PUT DELETE create read update delete /board 새로운 board 등록 boards 목록을 리턴 board 정보를 업데이트 board 정보를 삭제 3.단어를 hyphen(-)으로 구분하기 (underscores _ , camel 표기법 x) ex. example.com/boardUs..
Goal 요구사항에 부합하는 DB설계를 해보자 ERD (Entity-Relationship Diagram) 란? 요구사항을 분석하여 그림으로 그려내어 그 관계를 도출한 다이어그램을 말한다. 즉, ERD는 엔티티(entity) 간의 관계(relationship)를 도표(diagram)로 표시한 그림이다. 요구사항 참고 [springboot / 게시판 API] 개발환경 및 요구사항 정의 개발 환경 Intellij , springboot, java11, mybatis, mariadb(mysql) 특이사항 Lombok 사용 x 클래스는 VO or DTO로 Map 사용 x 게시판 API 개발 기능 요구사항 회원 가입 기능 회원 로그인 기능 회원이 접근 가능한 게시 dev-rosiepoise.tistory.com ..
개발 환경 Intellij , springboot, java11, mybatis, mariadb(mysql) 특이사항 Lombok 사용 x - 스프링을 더 깊게 이해하기 위함. 알고사용하는 것과 모르고 사용하는 것은 천치 차이. 클래스는 VO or DTO로 Map 사용 x - 캡슐화 그리고 유지보수의 용이성을 위한 것 builder 패턴 사용하기 - 생성자로 생성 x 게시판 API 개발 기능 요구사항 회원 가입 기능 회원 로그인 기능 회원이 접근 가능한 게시판, 비회원이 접근 가능한 게시판, 회원 + 비회원 접근 가능한 게시판 게시물 읽기 기능 게시물 댓글 작성 기능(대댓글 제외) 게시물 댓글 리스트 게시물 댓글 수정 기능 게시물 댓글 삭제 기능 게시물 수정 기능 게시물 삭제 기능 게시물 읽기 수 표시 ..
Goal 데이터 바인딩에 대해 알아본다 PropertyEditor에 대해 알아본다 데이터 바인딩이란? 기술적인 관점 : 프로퍼값을 타겟 객체에 설정하는 기능 사용자 관점 : 사용자 입력값을 어플리케이션 도메인 모델에 동적으로 변환하여 넣어주는 기능 org.springframework.validation.DataBinder 데이터 바인딩의 개념은 스프링 여러곳에서 쓰이는 핵심 기술 중 하나 즉, 입력값은 대부분 "문자열"인데 그 값을 객체가 가지고 다양한 타입(int, long, Boolean, Date 등 나아가 Event, Book)같은 도메인 타입으로도 변환하여 넣어주는 기능을 말한다. DataBinder (Spring Framework 6.0.11 API) Register the given cust..
Goal 스프링의 추상화 중 하나인 Validation 추상화에 대해 알아본다 validator를 구현해보며 이해한다 Validation 추상화란 ? 애플리케이션에서 사용하는 객체 검증용 인터페이스 이며, org.springframework.validation.Validator를 제공한다 특징 어떠한 계층과도 관계가 없다 모든 계층(웹,서비스,데이터)에서 사용해도 좋다 주로 스프링 mvc에서 사용하기는 하지만 웹 계층에서만 사용하는 웹 전용 validator가 아니다 구현체 중 하나로 JSR-303(Bean Validation 1.0)과 JSR-349(Bean Validation 1.1)을 지원한다 LocalValidatorFactoryBean bean validation이 제공하는 여러 애노테이션을 사..
Goal 스프링의 추상화 중 하나인 Resource 추상화에 대해 알아본다 추상화를 한 이유에 대해 알아본다 Resource 인터페이스의 동작과정과 구현체를 알아본다 Resource를 읽어오는 방법에 대해 알아본다 Resource 추상화란 ? 구체적으로 java.net.URL를 추상화 한 것 org.springframework.core.io.Resource 클래스로 감싸서 로우 레벨에 접근하는 기능을 추상화하였다. 가져오는 기능은 아래 포스팅 참고 https://dev-rosiepoise.tistory.com/99 [IoC 컨테이너와 빈] ResourceLoader Goal ApplicationContext의 Resource Loader에 대해 알아본다 ResourceLoader란? 리소스를 읽어오는 기..
Goal ApplicationContext의 Resource Loader에 대해 알아본다 ResourceLoader란? 리소스를 읽어오는 기능을 제공하는 인터페이스 public interface ApplicationContext extends ResourcePatternResolver public interface ResourcePatternResolver extends ResourceLoader getResource(location); ResourceLoader의 기능 파일 시스템에서 읽어오기 클래스패스에서 읽어오기 URL로 읽어오기 상대/절대 경로로 읽어오기 AppRunner @Component public class AppRunner implements ApplicationRunner { @Auto..
dev_rosieposie
'Spring' 카테고리의 글 목록