All

프로젝트/RestApi_CRUD

RestApi 게시판 CRUD 연습 (3) - 유닛 테스트 : Service 테스트

기본적인 CRUD의 로직 구현은 끝이 났다. 이제 각 단위들을 테스트해 볼 차례이다. 우선 이번 포스트에서는 Service 로직을 테스트해 보자! PostServiceTest @SpringBootTest class PostServiceTest { @Autowired PostService postService; @Autowired PostRepository postRepository; @BeforeEach void clean() throws Exception { postRepository.deleteAll(); } 우선 클래스 상단에 들어가는 기본적인 세팅이다. 테스트할 PostService와 그에 필요한 PostRepository를 주입받는다. @BeforeEach를 통하여 각 테스트를 시작하기 전 po..

프로젝트/RestApi_CRUD

RestApi 게시판 CRUD 연습 (2) - Service / Controller

바로 Service부터 확인해 보자 PostService package hongxeob.restapi_crud.service; import hongxeob.restapi_crud.Post; import hongxeob.restapi_crud.repository.PostRepository; import hongxeob.restapi_crud.request.CreatePostDto; import hongxeob.restapi_crud.request.PostConvert; import hongxeob.restapi_crud.request.UpdatePostDto; import hongxeob.restapi_crud.response.PostListResponse; import hongxeob.restapi_cr..

프로젝트/RestApi_CRUD

RestApi 게시판 CRUD 연습 (1) - 연습 이유 / 프로젝트 세팅 / Entity,DTO,Repository

독학을 하다 처음으로 진행한 프로젝트가 드디어 마무리가 되었다. 한 2개월 정도 걸렸던 것 같다. 공부한 것을 처음으로 만들어보니, 로직 구현에만 집중을 해도 버거운 시간들이었던 것 같다. 그래서 전 프로젝트에서 아쉬웠던 점들이 있었는데 테스트 코드를 작성하며 유닛 테스트를 해보지 못한점 RESTful한 API를 제대로 설계하지 못한 점 Entity 클래스에 @Setter, @Data등을 사용하여 리팩토링에 어려움이 있었던 점 그래서 위의 아쉬운 점들을 연습하고 보완하기 위해 아주 간단하게 CRUD의 기능만 있는 게시판을 연습해 보았다. 웹 서비스의 가장 기초가 되는 것이 CRUD 이니 더욱 집중해 보고자 하였다. 프로젝트 및 언어 버전은 Java 11 / Spring Boot 2.7.9 를 사용하였다...

Spring

스프링 빈(Bean)의 생명주기와 스코프

스프링 빈(Spring bean) 이란? Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)이라고 부른다 자바 프로그래밍에서는 Class를 생성하고 new를 입력하여 원하는 객체를 직접 생성 후 사용했다 하지만 Spring에서는 직접 new를 이용하여 생성한 객체가 아니라, Spring에 의하여 관리당하는 자바 객체를 사용한다 이렇게 Spring에 의해 생성되고 관리되는 자바 객체를 Bean 이라고 한다 스프링에서 빈(Bean)을 등록하는 방법 1. @Component (자동) @Component 어노테이션이 붙여져 있는 경우에는 스프링이 확인하여 빈으로 등록시킨다 @Controller, @Service, @Repository는 모두 @Component를 포함하고 있다. 2. @Config..

Spring

싱글톤 vs 스프링 싱글톤

싱글톤 VS 스프링 싱글톤 우선, 싱글톤 패턴에 관하여 궁금하다면! Java 싱글톤 패턴 싱글톤 클래스를 구현하기 위해 사전 정의된 규칙 같은건 없지만 *클래스 로더마다 한 번만 인스턴스화 해야한다 싱글톤 클래스라고 하면 해당 클래스의 인스턴스를 하나만 만들 수 있다 구현 방법 외부 클래스로부터 인스턴스화 되는 것을 막기 위해 생성자는 private으로 선언되어야 한다 인스턴스화 된 클래스를 static 변수로 선언한다 = 어느 영역에서든 접근 가능 인스턴스화 된 클래스를 리턴하는 함수를 선언한다 이렇게 하면 클래스가 클래스 로더에 의해 단 한번만 인스턴스화 되는 것을 이용하여 구현한다 *클래스 로더란 자바는 동적 로드, 즉 컴파일 타임이 아니라 런타임(바이트 코드를 실행할 때)에 클래스 로드하고 링크하..

Spring

스프링 어노테이션 (Spring Annotation)

어노테이션(Annotation)이란 자바 어노테이션은 자바 소스 코드에 추가하여 사용할 수 있는 *메타데이터의 일종이다 보통 ‘@’ 기호를 앞에 붙여서 사용한다. JDK 1.5버전 이상에서 사용이 가능하다 @를 이용한 주석, 자바 코드에 주석을 달아 특별한 의미를 부여한 것이다 자바 어노테이션은 클래스파일에 임베디드되어 컴파일러에 의해 생성된 후 자바 가상머신에 포함되어 작동한다 *메타데이터란 Application이 처리하는 데이터가 아니고, 컴파일 과정과 런타임 과정에서 코드를 어떻게 컴파일하고 처리할것인지를 알려주는 정보이다 Annotation의 용도 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공한다 오버라이딩을 하기 위해서는 부모 클래스에 있는 메소드명과 매개변수를 동일하게 가져가야한다..

Spring

AOP의 특징과 개념 (feat. Filter, Interceptor)

들어가기 앞서.. 공통 프로세스에 대한 고민 자바 웹 개발을 하다보면, 고통적으로 처리해야 할 업무들이 많다 예를들어 로그인(세션 체크)처리, 권한체크, Xss(Cross site script)방어, 페이지 인코딩 변환등.. 공통업무에 관련된 코드를 모든 페이지 마다 작성 해야한다면 중복된 코드가 많아지게 되고 프로젝트 단위가 커질수록 서버에 부하를 줄 수 있으며, 소스 관리도 되지 않는다. 즉, 공통 부분은 빼서 따로 관리하는게 좋다 위와 같은 공통 처리를 위해 활용할 수 있는 것이 3가지가 있다 AOP 인터셉서 필터 AOP Aspect Oriented Programming의 약자로 관점 지향 프로그래밍 이라고 불린다. AOP는 OOP를 대신하는 새로운 개념이 아니라, 기존 OOP를 더욱 보완, 확장하..

Spring

서블릿과 서블릿 컨테이너

서블릿(Servlet)이란? 서블릿이란 Dynamic Web Page(동적 페이지)를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다. 다양한 웹 요청과 웹 응답의 흐름을 간단한 메소드 호출만으로 체계적으로 다룰 수 있게 해주는 기술 서블릿의 주요 특징 클라이언트의 Request에 대해 동적으로 작동하는 웹 애플리케이션 컴포넌트 HTML을 사용하여 Response 한다. JAVA의 쓰레드를 이용하여 동작한다. MVC 패턴에서 컨트롤러로 이용된다. HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속받는다. UDP보다 속도가 느리다. HTML 변경 시 Servlet을 재 컴파일해야 하는 단점이 있다. 서블릿의 동작 과정 클라이언트가 We..

맹수호빵
'분류 전체보기' 카테고리의 글 목록 (6 Page)