반응형
목록
스프링 입문 (31)
[꼼꼼한 개발자] 꼼코더
🧑🏻💼 비즈니스 계층 비즈니스 계층은 ‘고객의 요구사항을 반영하는 계층’이다. 프레젠테이션 계층과 영속 계층의 중간다리 역할을 하게 된다. 영속 계층은 데이터 베이스를 기준으로 설계를 나누어 구현하지만 비즈니스 계층은 ‘로직을 기준으로 해서 처리’하게 된다. 💁🏻♂️ 쇼핑몰에서 상품을 구매 예시를 들어본다. 해당 쇼핑몰의 로직은 ‘물건을 구매한 회원에게 포인트 적립’이라고 한다면 영속 계층의 설계는 ‘상품’과 ‘회원’으로 나누어 설계하게 된다. 반면 비즈니스 계층은 ‘상품 영역’과 ‘회원 영역’을 동시에 사용해서 하나의 로직으로 처리하게 되므로 다음과 같은 구조를 만들게 된다. 현제 예제는 단일한 테이블을 이용하고 있기 때문에 위와 같은 구조는 아니지만 설계를 할 때는 원칙적으로 영역을 구분해서 작성..
👷🏻♂️ 예제 프로젝트 구성 Spring LegacyProject로 ex02 프로젝트 생성한다. 생성 시 pom.xml 수정 → 데이터베이스 관련 처리 → 스프링 MVC 처리 순으로 진행한다. 👨🏻💻 pom.xml 수정 스프링 버전과 java 버전등을 수정한다 스프링 관련 추가 라이브러리는 spring-tx, spring-jdbc, spring-test가 필요하다. MyBatis를 이용할 것이므로 HikariCP, MyBartis, mybatis-spring, Log4jdbc 라이브러리들도 추가한다. 테스트와 Lombok을 사용할 것이고 사용을 위하여 jUnit 버전을 변경하고, Lombok을 추가한다. 서블릿은 3.0으로 수정해 준다. 서블릿 3.0버전과 JDK 8 기능을 활용하려면 Maven 관련..
👷🏻♂️ 프로젝트를 위한 요구사항 프로젝트 진행 전에 고객의 요구사항을 인식하고, 이를 설계하는 과정이 필요하다. 이를 흔히 요구사항 분석 설계라고 한다. ‘고객이 원하는 내용이 무엇이고, 어느 정도까지 구현할 것인가'에 대한 프로젝트 범위를 정하는 것이 목적이다. 요구사항은 너무 방대해질 수 있으므로, 단계를 정확히 구분해 주는 것이 좋다. 따라서 경험이 풍부하다면 초기 버전을 많은 기능을 포함시킬 수 있지만 경험이 적다면 최대한 단순하고 눈에 보이는 결과를 만들어 내는 형태로 진행하는 것이 좋다. 요구사항은 온전한 문장으로 정리하는 것이 좋다. 주어는 ‘고객’이고 목적어는 ‘대상’이 된다. 여기서의 ‘대상’은 결국 데이터의 베이스 설계와 시스템 설계에서 가장 중요한 용어가 된다. 다른 용어로는 도메..
👀 스프링 MVC 프로젝트의 기본 구성 스프링 MVC를 이용하는 프로젝트의 구성을 이해하는 것은 전체 데이터 흐름을 보는 것이다. 브라우저에서 전송한 데이터를 스프링 MVC의 어떤 단계를 거쳐 실행되는지 이해해야 문제 발생 시 빠른 대처와 대안을 찾을 수 있기 때문이다. 일반적인 웹 프로젝트는 3-tier(티어) 방식으로 구성된다. 🖥 Presemtatiom Tier(화면계층) 화면에 보여주는 기술을 사용하는 영역 예제에서는 Servlet/JSP나 스프링 MVC가 담당하는 영역 프로젝트의 성격에 맞춰 앱으로 제작하거나 CS(Client-Server)로 구성되는 경우도 있다. 이전 글들에서 스프링 MVC와 JSP를 이용한 화면 구성이 이에 속한다 👷🏻♂️ Business Tier(비즈니스 계층) 순수한 ..
👀 스프링 MVC의 Controller 스프링 MVC를 이용하는 경우 작성되는 Controller는 다음과 같은 특징이 있습니다. HttpServletRequest, HttpServletResponse를 거의 사용할 필요 없이 필요한 기능 구현 다양한 타입의 파라미터 처리, 다양한 타입의 리턴 타입 사용 가능 GET 방식, POST 방식 등 전송 방식에 대한 처리를 어노테이션으로 처리 가능 상속/인터페이스 방식 대신에 어노테이션만으로도 필요한 설정 가능 다른 프레임워크들과 달리 스프링 MVC는 어노테이션을 중심으로 구성되기 때문에 예제들을 작성할 때에도 각 어노테이션의 의미에 대해서 주의해가며 학습해야 한다. 👨🏻💻 @Controller, @RequestMapping(SampleController 클래..
🕹 스프링 MVC의 기본 사상 Java를 이용하는 웹 애플리케이션을 제작해 본 적이 있다면 Servlet/JSP 기술을 활용해서 제작하는 방식을 먼저 배우게 된다. 이후 모델 2라는 방식에 대해서 학습하게 되는데 스프링 MVC의 경우 이러한 부분은 개발자들에게 보여주지 않고 개발자들은 자신이 필요한 부분만 집중해서 개발할 수 있는 구조로 만들어져 있다. 웹 프로그래밍에서 가장 익숙한 단어들 중 하나는 Request/Response일 것이다. Servlet/JSP에서는 HttpServletRequest/HttpServletResponse라는 타입의 객체를 이용해 브라우저에서 전송한 정보를 처리하는 방식이다. (Servlet/JSP의 API사용) 스프링 MVC의 경우 이 위에 하나의 계층을 더한 형태가 된다..
🤝 XML 매퍼와 같이 쓰기 MyBatis를 이용해서 SQL을 처리할 때 어노테이션을 이용하는 방식이 압도적으로 편리하긴 하지만 SQL이 복잡하거나 길어지게 되면 XML 방식을 더 선호하게 된다. MyBatis-Spring은 Mapper 인터페이스와 XML을 동시에 이용이 가능하다. XML 작성 시 XML 파일의 위치, XML 파일에서 지정하는 namespace 속성이 중요하다 XML 파일 위치는 Mapper 인터페이스가 있는 곳에 같이 작성하거나 src/main/resources 구조에 XML을 저장할 폴더를 생성 할 수도 있다. XML 파일을 만들 때 이름에 대한 규칙은 없다. 하지만 가능하면 Mapper 인터페이스와 같은 이름을 이용하자.(가독성을 위해) 👨🏻💻 TimeMapper.java 수정 ..
🖌 추상화 실습 쥐 클래스를 추상화하여 클래스와 인스턴스를 만들어보자 아래 그림은 main() 메서드 실행 직전의 T메모리 스냅샷이다 주목할 점은 Mouse의 속성들의 변수 저장 공간이 없다. 이유는 3개 속성 모두 Mouse 클래스에 속하지 않고 Mouse 객체에 속하기 때문. 즉 객체가 생성되야만 힙 형역에 할당되어 변수 공간이 생성된다. Mouse micky = new Mouse();라는 코드가 실행된다. 이때micky라는 참조변수가 가리키는 번지수는 100번이라고 가정한다. 그럼 아래와 같은 T 메모리 구조가 나타난다. 📌 static 예제 위에 설계도를 보면 꼬리(countOfTail)라는 속성이 보인다. 근데 ‘미키마우스’, ‘제리’, ‘찍찍이’ 모두 꼬리는 1개이다. 우리는 여기서 한 공간에..