Spring, Spring Boot 14

[Spring Boot] JUnit4 + Mock Test

Mock? Mock이란 테스트 코드를 위해 실제 사용되는 객체를 불러오기 어려울 때 가짜 객체를 만들어 사용하는 기술을 말한다. 이번 포스팅에선 단위 테스트 프레임워크인 JUnit4 와 Mock을 이용한 테스트 방법을 소개하겠다. 예제 1 @WebMvcTest 먼저 MockMvc를 사용하기 위해선 @WebMvcTest 어노테이션이 필요하다. (@WebMvcTest 어노테이션은 MockMvc를 자동으로 구성하여 테스트 가능하도록 해준다.) MockMvc - 웹 애플리케이션을 애플리케이션 서버에 배포하지 않고도 스프링 MVC의 동작을 재현할 수 있는 라이브러리 Controller Test perform() - 요청하는 역할을 함 get() - get 방식으로 url 호출 content() - Request ..

Spring, Spring Boot 2022.05.16

[Spring Boot] HTTP 통신을 위한 OpenFeign

OpenFeign? REST형식의 API를 더 쉽게 호출할 수 있게 도와주는 오픈소스 라이브러리 넷플릭스에서 Feign라이브러리를 자체적으로 구현하여 사용되었다가 현재는 오픈소스인 OpenFeign이라는 라이브러리가 나와 더 많은 기능들이 지원되고 있다고한다. 적용법, 예제 단순 REST API CALL에 대한 적용법이다. 1. Dependency 추가 https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign org.springframework.cloud spring-cloud-starter-openfeign 2. SpringBootApplication에 @EnableFeignClents 어노테이션..

Spring, Spring Boot 2022.05.08

[Spring Boot] HTTP 통신을 위한 RestTemplate사용

REST? REST란 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 것을 의미 즉, HTTP URI를 통해 자원을 명시하고 HTTP Method를 통해 자원에 대한 CRUD를 적용하는 것을 의미 따라서 REST 아키텍쳐의 원칙을 지켜 구현한 API를 제공하는 서비스는 RestFul하다고 할 수 있다. REST API URI 설계 규칙 - 슬래시(/)는계층 관계를 나타내는데 사용. - URI 마지막엔 슬래시(/)를 포함하지 않는다. - 하이픈(-)은 URI 가독성을 높이는데 사용. - 밑줄(_)은 URI에 사용하지 않는다. - URI에는 소문자가 적합하다. - 파일확장자는 URI에 포함하지 않는다. RestTemplate? 스프링에서 제공하는 HTTP 통신을 쉽게 사용하기 위한 템플릿 RestTe..

Spring, Spring Boot 2022.05.07

[Spring Boot] MyBatis typeAlias 지정하기

MyBatis를 이용해 쿼리를 작성할 때 리턴 타입이나 파라미터 타입 등을 지정할 때가 있는데, 위 사진처럼 패키지 명을 모두 작성해야 하는 번거로움이 있다. 이를 개선하기 위해 MyBatis는 typeAlias를 지정할 수 있는 설정기능을 제공하고있다. 위 사진과 같이 typeAilas를 지정하면 해당 패키지의 객체를 지정한 별칭으로 파라미터를 지정할 수 있다. mybatis-config.xml파일을 만들어 위 코드를 넣으면 되는데, application.properties에도 mybatis-config.xml을 설정파일로 쓰겠다고 명시해줘야한다. (설정 xml파일 이름을 꼭 mybatis-config로 안해도된다.) mybatis.config-location = classpath:mybatis-con..

Spring, Spring Boot 2022.04.01

[Spring Boot] 웹 페이징(Paging) 구현(2)

페이징 함수화 저번 포스팅에서 작성한 페이징 로직 코드를 함수화하여 웹 페이지에 페이징 기능을 적용할 수 있도록 하였다. 페이징 함수를 사용한 서비스 로직이다. 페이징을 위해 필요한 변수를 생성자를 통해 세팅을하고, Paging pg = new Paging(한 페이지에 보여줄 글의 개수, 총 콘텐츠 개수, 이동할 페이지, 한 페이징 목록에 보여줄 페이지 개수, 요청 URI) makePagingHTML 함수로 페이징 문자열을 가져온다. 저번 포스팅에서 작성한 페이징 코드 중 콘솔로 페이징을 출력했던 부분을 페이징 HTML 코드를 문자열 형태로 만들어 반환하는 형식으로 변경하였다. (페이징 로직의 전체 코드와 상세 설명은 아래 글에서 다뤘다.) https://rthfickro3.tistory.com/entr..

Spring, Spring Boot 2022.03.28

[Spring Boot] Thymeleaf 템플릿 사용하여 공통 레이아웃 구성하기

Thymeleaf? Thymeleaf란 서버 템플릿 엔진의 종류 중 하나이다. 즉 Thymeleaf라는 서버 템플릿 엔진은 서버에서 가져온 데이터를 만들어둔 템플릿에 넣어 html을 만들고 그것을 클라이언트(사용자)에게 보여준다. 서버 템플릿 엔진인 만큼 타임리프를 이용하여 확장된 html 템플릿을 만들 수 있다. Thymeleaf의 대표적인 특징으론 html문법을 크게 벗어나지 않았단 점이다. Thymeleaf의 문법을 이용하여 html 태그의 속성을 추가해 더 동적인 html 템플릿을 만드는 방식이 대부분이라 별도의 서버 없이 html 템플릿만 독립적으로 실행하여도 똑같은 웹 화면을 띄울 수 있다는 것이 장점이다. 공통 레이아웃 만들기 org.springframework.boot spring-boot..

Spring, Spring Boot 2022.03.24

[Spring Boot] 웹 페이징(Paging) 구현(1)

페이징 웹사이트를 이용하다보면 많은 양의 글들이 페이지로 나누어져 있는 것을 볼 수 있다. 이번 포스팅에서 웹 페이징의 원리와 구현 방법에 대해 다뤄볼 예정이다. 페이징 기능 구현 페이징 기능을 웹에 적용하기 전에 페이징의 원리를 이해하기 위한 테스트 코드를 작성하였다. 21~28 LINE의 변수 목록 ShowContentSize - 한 페이지에 노출될 글의 개수 contentSize - 페이징 처리할 콘텐츠의 총 개수 movePage - 이동할 페이지 번호 totalPage - 페이지의 총 개수 pageListSize - 한 페이지 목록에 노출될 페이지 개수 tmpPage - 이동할 페이지 목록의 위치(페이지 목록의 시작, 끝 페이지 번호를 구하기 위한 임시 변수) pageStart - 페이지 목록의 ..

Spring, Spring Boot 2022.03.17

[Spring Boot] form을 이용해 데이터 전송하여 DB INSERT까지

form 태그를 이용해 데이터를 전송하여 컨트롤러가 그 값을 받아 DB에 INSERT하는 예제이다. 먼저 form 태그에 컨트롤러가 받을 수 있는 엔드포인트 url을 action속성 값으로 설정하고, post 형식으로 보내겠다는 metod 속성 값을 설정하였다. 텍스트 입력 창에 값을 입력하고 submit 버튼을 누르면 컨트롤러가 그 값을 받는다. Post형식으로 요청한 것을 받겠다는 의미로 @PostMapping 어노태이션을 사용해 view의 요청을 받는다. @RequestParam 어노태이션을 이용해 view에서 받은 파라미터를 가져오고 서비스 단 DB에 INSERT하는 insertData 함수로 파라미터를 보낸다. 서비스 단을 거쳐 Mapper 인터페이스와 매핑되는 sql 문을 실행한다. 이때 넘겨..

Spring, Spring Boot 2021.11.29