목록분류 전체보기
Step-by-Step
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Q2rbl/btrAPWITdS2/H18lYgLOtQ4Ohlh6sZ9UQK/img.png)
무엇이든 사용하기 전에 기본 개념을 제대로 알고 사용하는 것이 장기적으로 도움이 되는 것 같다 그리고 한 번 배운 내용을 평생 기억할 순 없으니 블로그에 작성하여 잊을때마다 복습하려고 한다 REST - REST : REpresentational State Transfer - 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것 1) HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource) 명시 2) HTTP Method(POST, GET, PUT, DELETE)를 사용하여 3) 해당 자원에 대한 CRUD Operation 적용 - 자원 기반 구조 설계의 중심에 Resource가 있고, HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cpZKtU/btrAON6fKCk/U6GzUgEXjASacjLWgUc2P0/img.jpg)
프로젝트를 진행하면서 매 순간 드는 생각은 대학교에 와서 단순히 전공 과목만 듣고 졸업해서는 아무것도 하지 못한다는 것을 깨닫게 되었다 그저 학교는 나의 실력의 기본기만 닦아주고 결국 자기계발은 오로지 나의 몫이다 처음에는 Spring에 대해 모르는 것이 너무 많아서 막막하고 힘들었는데, 하나하나 차근차근 공부하면서 실제로 적용해보기도 하고, 에러도 많이 발생하고ㅋㅋㅋ 어디가 잘못된지 몰라 인터넷에 쳐보고 공부하면서, 또 코드 전체를 정독하고 뜯어보면서 천천히 나아가다보니 그래도 조금은 틀이 잡히는 것 같다 소프트웨어공학과를 재학중이기 때문에 주변에 코딩 잘하는 사람들도 꽤 많고 Spring을 써본 사람들도 있어서 어려움이 닥쳤을 때 언제든지 물어볼 수 있지만, 평생 남들에게 물어보고 해결책을 얻어낼 수..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/btVYbH/btrANUxUjhz/rfeNpsN03eKg9COihKhjK0/img.png)
응답표준(1)로 나타낸 이유는.. 아무래도 처음이다 보니까 간단하게만 작성하였고, 나중에 수정할 여지(?)를 남겨두기 위해서이다. ㅋㅋㅋ 이 전까지는 스프링 내부에서 데이터를 DTO에 담아 DB까지 전달하는 과정을 구현했다. 이제 안드로이드 스튜디오와 통신을 하기 위해 구체적인 응답 표준을 작성해야 하는데, 실전에 적용하기에 앞서 필요한 것이 무엇인지 메모장으로 나타내보았다. 컴퓨터의 메모장을 켜서 현재 통신을 통해 데이터베이스에 접근하는 경우를 정리해보았다. Rest API의 HTTP method를 적용한 응답표준을 작성할건데, 길거나 중요한 데이터는 Json의 body에 담아 전송할 것이다. 위의 메모장을 하나하나 살펴보면서 응답표준을 작성하였다. Spring 프로젝트에서 작성하기에는 너무 복잡하고 ..
처음 프로젝트를 생성할 때 Spring 개념만 잡고 바로 뛰어들었더니 필요해보이는 기능들을 다 넣었는데, Mapper 인터페이스와 DAO 인터페이스 둘 다 생성해놓았다 이후 Mapper 중심으로 개발하다보니 DAO 인터페이스는 사용하지 않게 되었다 내가 선택한 프로젝트 구조는 Controller → Service → Mapper.java → Mapper.xml → DB 이다. Mapper Interface - Mybatis Mapping XML에 기재된 SQL을 호출하기 위한 인터페이스 - Mapping 파일에 있는 SQL을 자바 인터페이스를 통해 호출할 수 있도록 해줌 - Mapper Interface는 개발자가 직접 작성 - Mapper namespace는 패키지 명을 포함한 인터페이스 명으로 작성 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/1eUOn/btrzpbg2kUe/UkmzOteCUsbQw1m1KeBZAk/img.png)
Service - Controller가 받은 요청에 대해 알맞는 정보를 가공해서 다시 Controller에게 데이터를 넘겨주는 역할 - Controller에서 요청을 받아 Data를 Mapper에게 넘겨주고 Mapper에 의해 DB에서 받아온 정보를 Controller에게 전달해준다 사용할 Service - User와 Bill을 구분하여 작성 Service Interface 이유 찾아보니 다들 Service 부분은 Interface와 implements한 class로 나눠 작성했는데 그 이유는 다음과 같다 - 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙 중 OCP 원칙을 실현하기 위함 - Interface를 토대로 Service 구조의 뼈대를 만들고, Implements를 통해 Service의 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Altnw/btrxVesNOK0/Q24DiuLJfD73F1rhCuKwAK/img.png)
Spring에 대한건 모든게 처음이라 열심히 구글링하고 깃헙에서 검색하면서 배우는 중 ㅠ_ㅠ DTO(Data Transfer Object) - 프로세스 간에 데이터를 전달하는 객체 - Client-Controller-Service-Mapper-DB 계층 간 데이터를 요청하고 받을 때 사용 - Lombok을 이용하여 setter/getter 이용 사용할 DTO - 데이터베이스의 테이블 기준으로 DTO를 작성 (필드 종류, 타입도 동일) - 해당 DTO가 어디서 사용되는지는 다음에 포스팅에서 기록할 예정 1. UserDTO 회원 정보를 담은 DTO package com.energysolution.dto; import lombok.Getter; import lombok.NoArgsConstructor; imp..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/OmKTk/btrxVkNyPsn/BxJrnUJSbA6dkqfeO5ETk1/img.png)
Spring의 MVC - 스프링 프레임워크(Spring Framework)는 Model-View-Controller(MVC) 패턴을 사용 - Model : 어떤 동작을 수행하는 코드 - View : 모델을 컨트롤러로부터 가져와 사용자에게 보여줌 - Controller : 모델의 상태 변경 및 화면(View)와 비지니스 로직(Model)을 연결하는 Routing 역할 Controller 구현하기 1. Client가 URI 형식으로 웹 서비스에 요청 보냄 2. Mapping되는 Handler와 해당 Type을 찾는 DispatcherServelet이 요청을 인터셉트 3. @ResponseBody를 이용하여 Client에게 Json 형태로 데이터 반환 Controller 패키지 생성 후 내부에 Controll..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ub4V7/btrxAaKLCs8/SaaVgVyWgfcFxReiehcCmk/img.png)
Gradle 프로젝트 생성 build.gradle 설정 application.properties 설정 1. 프로젝트 생성 New > Spring Starter Project Gradle Project / Java 선택 필요한 Dependencies 설정 - 아래에 추가로 설명 ※ 참조 : https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using.build-systems.starters 프로젝트 전체 구조 생성! 2. Build.Gradle build.gradle plugins { id 'org.springframework.boot' version '2.6.5' id 'io.spring.dependency-management' ..