BackEnd263 [Spring] 스프링 핵심 원리 이해1 - 예제 만들기 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 이번시간에는 Spring이 왜 나왔는지 를 이해하기 위해하는 단원으로 잘못된 코드로부터 시작하여 점점 유지 보수가 편한 코드로 바뀌어가는 과정을 확인하는 시간 이였다. 블로그에는 일부 코드들은 생략하여 올리지 않았습니다. 1. 회원 도메인 설계 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 먼저 회원 클래스를 통하여 설계할 구조를 파악하였다. 서비스 인터페이스를 구현한 impl 과 MemberRepository 인터페이스를 만든다. 구현체는 언제든 변경 가능하다. 다만 class 다이어그램만으로는 runtime때 동적으로 설정되는 관계를 알기 어.. BackEnd/Spring 2022. 1. 31. [Spring] SOLID 원칙 (좋은 객체지향 설계의 5가지) 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. SOLID 원칙 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 SRP : 단일 책임 원칙 OCP : 개방 폐쇄 원칙 LSP : 리스코프 치환 원칙 ISP : 인터페이스 분리 원칙 DIP : 의존관계 역전 원칙 SRP (Single Responsibility Principle) " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 단일 책임 원칙이라 부른다. 한 클래스는 하나의 책임만을 가져야 한다. 하지만 하나의 책임이라는 것이 좀 모호하다. 책임이라는게 클 수도 있고, 작을 수도 있기 때문이다. 예를들어 자동차를 생각.. BackEnd/Spring 2022. 1. 31. [오브젝트] 객체, 설계 (1장) 조영호님의 오브젝트 라는 책을 읽으며, 나중에 다시 상기하는 용도로 간략하게 정리해 봅니다. 오브젝트: 코드로 이해하는 객체지향 설계 역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라! 객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두 번째 걸음은 객체를 wikibook.co.kr 1. 티켓 판매 어플리케이션 구현하기 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 책에서 나온 티켓 판매 어플리케이션은 절차지향적이다. 이를 개선해 나가야 한다. 구현한 클래스 다이어그램은 다음과 같다. 우선 절차 지향방식의 Theater는 다음과 같다. public class Theater { private TicketSeller.. BackEnd/OOP 2022. 1. 31. [HTTP] HTTP 메서드 활용 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 클라이언트에서 서버로 데이터 전송 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 ▶ 클라이언트에서 서버로 데이터 전송 클라이언트에서 서버로 데이터 전달 방식은 크게 2가지가 있다. 1) 쿼리 파라미터를 통한 데이터 전송 - GET - 주로 정렬 필터(검색어) 2) 메시지 바디를 통한 데이터 전송 - POST, PUT, PATCH - 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 ▶ 클라이언트에서 서버로 데이터 전송 4가지 상황 1) 정적 데이터 조회 이미지, 정적 텍스트 문서등을 조회하며, 보통 GET을 많이 사용한다. 쿼리 파라미터 없이 단순.. BackEnd/WEB 2022. 1. 31. [Spring] 스프링 MVC 프레임워크 공부하며 중요하다 싶은 내용들을 블로그에 공부겸 정리한 내용입니다! 지적 댓글 환영합니다~ 1. 스프링 MVC 핵심 구성 요소 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링 MVC의 핵심 구성 요소는 다음과 같습니다. 위의 사진을 보면 이라 되어있는 부분은 스프링 빈으로 등록되어야 하는 것을 의미합니다. 또한 초록색 박스의 JSP, 컨트롤러는 개발자가 직접 구현해고 스프링 빈으로 등록해야 하는 요소 입니다. 중앙에 위치한 DispatcherServlet은 모든 연결을 담당합니다. Client로부터 요청이 들어오면 DispatcherServlet은 그 요청을 처리하기 위해서 HandlerMapping 이라는 빈 객체를 통하여 컨트롤러를 검색하게 됩니다. (그림에서 .. BackEnd/Spring MVC 2022. 1. 31. [Thymeleaf] 체크 박스 - 멀티 인프런 김영한님의 Spring강의에서 공부한것을 올리며, Thymeleaf의 경우 unit 단위로 공부후 각각 정리하는 글을 작성하겠습니다. 멀티 체크 박스 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 우선 모델에 데이터를 담는 컨트롤러를 확인해 봅시다. @ModelAttribute("regions") public Map regions(Model model) { Map regions = new LinkedHashMap(); regions.put("SEOUL", "서울"); regions.put("BUSAN", "부산"); regions.put("JEJU", "제주"); model.addAttribute("regions", regions); return regions; .. BackEnd/Thymeleaf 2022. 1. 30. [Thymeleaf] 체크 박스 인프런 김영한님의 Spring강의에서 공부한것을 올리며, Thymeleaf의 경우 unit 단위로 공부후 각각 정리하는 글을 작성하겠습니다. 체크 박스 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번시간에는 체크박스의 문제점에 대하여 알아본 후, 이걸 Spring MVC 의 기능을 통해 수정해보고, 마지막으로 타임리프로 수정해볼것 이다. 우선 다음과 같은 컨트롤러와 체크박스가 있다고 해보자. @GetMapping("/add") public String addForm(Model model) { model.addAttribute("item", new Item()); return "form/addForm"; } 그냥 등록 Form을 보여주기 위한 컨트롤러 입니다. ● 단순.. BackEnd/Thymeleaf 2022. 1. 30. [Thymeleaf] 입력 폼 처리 인프런 김영한님의 Spring강의에서 공부한것을 올리며, Thymeleaf의 경우 unit 단위로 공부후 각각 정리하는 글을 작성하겠습니다. 입력 폼 처리 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 타임리프가 제공하는 입력 폼 기능을 적용하면, 기존 프로젝트의 폼 코드를 효율적으로 개선할수가 있다. 우선 수정할 기존 코드를 확인해 봅시다. 삼품을 수정하는 수정 Form에 해당합니다. 상품 수정 폼 상품 ID 상품명 가격 수량 저장 취소 이중 대표적으로 상품 ID 를 살펴봅시다. 나머지도 같은 원리로 변경됩니다. 상품 ID 기존의 코드에는 id, name이 같은 값으로 중복되고 있으며, value도 직접 타이핑 하여 지정해주고 있습니다. 이러한 과정을 한번에 처리하는 .. BackEnd/Thymeleaf 2022. 1. 30. [Thymeleaf] 레이아웃 인프런 김영한님의 Spring강의에서 공부한것을 올리며, Thymeleaf의 경우 unit 단위로 공부후 각각 정리하는 글을 작성하겠습니다. 레이아웃 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이전 템플릿 조각에서는 코드 조각을 갖고와서 내가 원하는 부분에 추가하는 방식 이였다면 (내 코드 공통 부분) 예를 들어서 layoutMain(내 코드) 메인 컨텐츠 결과는 다음과 같습니다. 우선 http://localhost:8080/template/layout 에 접속하면 컨트롤러가 작동하여 "template/layout/layoutMain" 의 뷰로 이동하게 된다. layoutMain 에서는 로 인하여 head 부분을replace하기위해 공통부분인 base를 끌어온다. 이.. BackEnd/Thymeleaf 2022. 1. 30. [TDD] 테스트 코드 작성 팁 (2/2) 해당 글은 "테스트 주도 개발 시작하기 - 최범균 저" 의 10장 내용을 공부, 기록겸 요약한 글 입니다. 지난 번 글에 이어서, 나머지 5가지 테스트 작성의 팁에 대하여 알아보자. 6. 실행 환경이 다르다고 실패하지 않기 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 같은 테스트 메소드가 실행 환경에 따라 성공하거나 실패하면 안된다. 로컬 개발 환경에서는 성공하는데 빌드 서버에서는 실패한다거나 윈도우에서는 성공하는데 맥 OS에서는 실패하는 식으로 테스트를 실행하는 환경에 따라 테스트를 다르게 동작하면 안된다. 이 전형적인 예가 바로 파일경로이다. public class BulkLoaderTest{ private String bulkFilePath = "d:\\mywor.. BackEnd/TDD 2022. 1. 30. [Thymeleaf] 템플릿 조각 인프런 김영한님의 Spring강의에서 공부한것을 올리며, Thymeleaf의 경우 unit 단위로 공부후 각각 정리하는 글을 작성하겠습니다. 템플릿 조각 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 웹페이지를 개발할때는 공통된 부분이 많다. 상단의 네비게이션 바, 하단의 저작권 표시 부분등 어느 페이지에 가던 공통적으로 처리되는 부분이 있다. 타임리프는 이런 문제를 해결하기 위해 템플릿 조각과 레이아웃 기능을 지원한다. 우선 이번 글을 결과물을 살펴봐야 이해가 가기 때문에 컨트롤러와 뷰 코드부터 먼저 살펴봅시다. @Controller @RequestMapping("/template") public class TemplateController { @GetMapping(".. BackEnd/Thymeleaf 2022. 1. 29. [TDD] 테스트 코드 작성 팁 (1/2) 해당 글은 "테스트 주도 개발 시작하기 - 최범균 저" 의 10장 내용을 공부, 기록겸 요약한 글 입니다. 유지보수하기 좋은 코드를 만들기 위해 필요한 좋은 패턴과 원칙이 존재하는 것처럼 좋은 테스트 코드를 만들려면 몇가지 주의해야할 사항이 있다. 1. 두 개 이상을 검증하지 않기 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 처음 테스트코드를 작성하면 한 테스트 메소드에 가능한 많은 단언을 하려고 시도한다. 그 과정에서 서로 다른 검증을 섞는 경우가 있다. @DisplayName("같은 ID가 없으면 가입에 성공하고 메일을 전송함") @Test void registerAndSendMail(){ userRegister.register("id","pw","email"); .. BackEnd/TDD 2022. 1. 28. 이전 1 ··· 15 16 17 18 19 20 21 22 다음