전체 글
-
[SPRINGBOOT] 기본 CRUD API 만들기①(등록)SPRINGBOOT 2022. 4. 17. 16:26
참조 : 스프링부트와 AWS로 혼자 구현하는 웹 서비스(이동욱 저) API를 만들기 위해서는 총 3개의 클래스가 필요하다. - Request 데이터를 받은 DTO - API 요청을 받을 Controller - 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service 여기서 Service는 비지니스 로직을 처리하는 것이 아니라 트랜잭션, 도메인 간 순서 보장의 역할을 한다. 비지니스를 처리하는 곳은 바로 Domain이다. - Web Layer 컨트롤러(@Controller)와 JSP 등의 뷰 템플릿 영역 필터(@Filter) , 인터셉터, 컨트롤러 어드바이스(@ControllerAdvice) 등 외부 요청과 응답에 대한 전반적인 영역 - Service Layer @Service에 사용되는 서비스 영역 C..
-
[SPRINGBOOT] JPA 기본 기능과 설정SPRINGBOOT 2022. 4. 7. 21:05
참조 : 스프링부트와 AWS로 혼자 구현하는 웹 서비스(이동욱 저) 웹 개발 내에서 데이터베이스를 다루는 일은 필수적이다. 하지만 객체지향 프로그래밍을 추구하는 업계 내에서 개발 시간보다는 SQL에 더 시간을 쏟는 아이러니가 발생한다. 객체 모델링이 아닌 테이블 모델링에 더 집중되고, 객체를 단순하게 테이블 구조에 맞춰서 전달하기만 하는 개발이 더 많이 이루어지고 있는 것이다. 이러한 문제를 해결하기 위해 JPA라는 JAVA 표준 ORM(Object Relational Mapping)기술이 나오게 된 것이다. 1. JPA 관계형 데이터베이스는 어떻게 데이터를 저장할지에 초점이 맞춰진 기술이다. 객체지향 프로그래밍은 기능과 속성을 한 곳에서 관리하는 기술이다. 이 두 개념은 애초에 다른 사상에서 출발하였고..
-
[SPRINGBOOT] 롬복SPRINGBOOT 2022. 4. 5. 22:10
참조 : 스프링부트와 AWS로 혼자 구현하는 웹 서비스(이동욱 저) 1. 롬복 소개 및 설치 자바를 개발할 때 자주 사용하는 Getter, Setter, 기본생성자, toString 등을 어노테이션으로 자동 생성해준다. build.gradle에 코드를 추가하여 롬복을 설치할 수 있다. gradle 7 버전을 사용하고 있기 때문에 인터넷을 참조하였다. (dependencies안에 추가한다.) implementation('org.projectlombok:lombok') testImplementation('org.projectlombok:lombok') annotationProcessor('org.projectlombok:lombok') testAnnotationProcessor('org.projectlomb..
-
[SPRINGBOOT]테스트코드 작성SPRINGBOOT 2022. 4. 4. 02:02
참조 : 스프링부트와 AWS로 혼자 구현하는 웹 서비스(이동욱 저) CH2. 스프링 부트에서 테스트 코드를 작성하자 1. 테스트 코드 소개 * TDD Test Driven Development의 약자로 테스트 주도 개발이라고 한다. 작은 단위의 테스트 테이스를 작성하고 이를 통과하는 토드를 추가하는 단계를 반복하여 구현한다. - 항상 실패하는 테스트를 먼저 작성 - 테스트가 성공하는 프로덕션 코드를 작성 - 테스트가 통과하면 프로덕션 코드를 리팩토링 * 단위 테스트 : 기능단위의 테스트 코드를 작성하는 것 테스트 코드를 작성하는 이유 - 단위 테스트는 개발단계 초기에 문제를 발견하게 해준다. - 단위 테스트는 개발자가 나중에 코드를 리팩토링 하거나 라이브러리 업그레이드 등에서 기존 기능이 올바르게 작동하..
-
[SPRINGBOOT] IntelliJ 활용한 개발환경 구성SPRINGBOOT 2022. 4. 3. 21:19
참조 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스(이동욱 저) CH1. 인텔리제이로 스프링 부트 시작하기 1. 인텔리제이 소개 개발 도구에는 이클립스, VS Code등 여러가지가 존재한다. 나 역시도 C 언어 공부 당시에는 VS Code, 자바와 스프링 공부에는 이클립스를 활용하였다. 인텔리제이는 스프링 부트 개발에 좀 더 친숙한 개발 도구로 최근 많은 기업이 도입하는 추세이다. * 인텔리제이의 장점 - 추천기능 - 다양한 리팩토링과 디버깅 기능 - 이클립스 깃에 비해 높은 자유도 - 프로젝트를 시작할 때 인덱싱을 하여 파일을 비릇한 자원들에 대한 빠른 검색 속도 2. 인텔리제이에서 프로젝트 생성하기 인텔리제이는 워크스페이스의 개념이 없고 Project와 Module의 개념이 있어서 모든 프로젝트..
-
[SPRING]DB연동(JDBC Util방식)SPRING 2021. 7. 31. 19:43
VO클래스는 DTO클래스와 같이 데이터를 직렬화 시켜서 한꺼번에 받을 목적으로 사용되는 클래스이다. 그러므로 항상 DB안의 테이블 구조를 파악하는 것이 우선이다. Spring과 데이버베이스를 연동시키기 위해서는 pom.xml에 등록해주어야 한다. pom.xml에 형상관리, 버전관리를 해주는 객체가 바로 Maven이다. xml 태그 방식으로 관리를 해주는데 이것은 Spring4 버전까지의 얘기이며, Spring5부터는 Gradle로 JSON방식으로 관리를 한다. 연결하려는 DB에 맞춰서 pom.xml에 등록한다. 여기서는 mariaDB를 사용하였다. org.mariadb.jdbc mariadb-java-client 2.3.0 org.springframework spring-jdbc ${org.springf..
-
[SPRING] Day1 (Class05. 어노테이션 기반 설정)SPRING 2021. 7. 30. 21:23
프레임워크는 xml 설정이 매우 중요하다. 그러나 그만큼 xml파일의 과도한 설정에 대한 부담도 크다. 그래서 프레임워크는 어노테이션을 이용한 설정을 지원한다. 1. Context 네임스페이스 추가와 component-scan 설정 Context 네임스페이스를 추가해주고 componet-scan 엘리먼트를 등록한다. 이때 base-package 속성을 "polymorphism"이라고 설정한다. 이것은 polymorphism이라는 이름의 패키지를 탐색하는데 이 안에서 @Component로 등록된 클래스의 객체를 자동으로 생성한다. 이때 인터페이스는 탐색 대상에서 제외되는데 인터페이스는 객체 생성이 불가능하기 때문이다. 자료형만 파악한다. package polymorphism; import org.sprin..
-
[SPRING] Day1 (Class04. 의존성 주입)SPRING 2021. 7. 25. 17:10
Dependency Injection(의존성 주입) = 객체 주입 ① 생성자 주입 ② Setter 주입 * 의존성 관계 하나의 객체에서 다른 객체의 변수나 메소드를 이용해야 한다면 이용하려는 객체에 대한 객체 생성과 생성된 객체의 레퍼런스 정보가 필요하다. 그런데 만약 의존 관계에 있는 객체에 직접 다른 객체 생성 코드를 명시한다면, 객체 생성이 두 번이나 이루어지고, 다른 객체로 변경하려고 할 때 메소드를 모두 수정해야 하는 불편함이 생긴다. 이 문제를 의존성 주입으로 해결할 수 있다. 1. 생성자 인젝션 스프링 컨테이너는 XML 설정파일에 등록된 클래스를 찾아서 객체 생성을 할 때 매개변수가 없는 기본 생성자를 호출한다. 하지만 매개변수를 가지는 다른 생성자를 호출하게 할 수도 있다. construc..