본문 바로가기

Engineering WIKI/Spring5

[Spring] Kotlin과 JPA를 사용하여 간단한 API 만들기 이번에는 Spring boot, JPA와 코틀린(Kotlin)을 사용하여 간단한 API를 만들어 보려고 한다. 현재 사내에서 API 서버를 스프링 부트와 코틀린을 사용하여 개발하고 있다. 하지만 구글 검색 시 자바에 비해 코틀린에 관한 내용은 많이 부족하다. ....그래서 시간 날떄 틈틈히 정리를 해보려고 한다. 사용한 기술은 아래와 같다. - Spring Boot - Kotlin - gradle - postgresql - JPA IDE는 IntelliJ를 사용하였으며, 이클립스 환경이랑은 약간 차이가 날 수 있다. 여담이자만 IntelliJ와 PyCharm을 접하고 나니 이클립스와 VScode를 사용하여 개발하는 상상만 해도 끔찍하다 .... 이제 아래 코드를 보면서 살펴보자. 프로젝트 구조 먼저 프로.. 2021. 4. 26.
[Spring] RequestParam을 VO로 받는방법 RequestParam을 이용하지않고 VO로 한번에 받는 방법 자 예제 파라미터는 다음과 같습니다. id = testId name = testname RequestParam을 이용하시는 경우 이렇게 코딩하게 되는데요.. @RequestMapping(value = "/test.do") @ResponseBody public String test(@RequestParam("id") String id, @RequestParam("name") String name) throws Exception{ return "id=" + id +", "+"name="+name; } ※참고로 @ResponseBody 태그로 호출할 화면의 파일명이 아닌 String 형태로 화면에 바로 뿌려주었습니다. 파라미터가 점점 많아지면 코딩.. 2021. 4. 26.
[Spring] DTO를 Inner Class로 사용 Api별로 화면에 return하는 데이터가 달라 많은 DTO 파일을 생성하게됩니다. Entity들의 데이터를 가공하여 DTO에 Set Method 혹은 builder로 매핑하는 코드가 길어집니다. 이제부터 더 간결한 코드를 고민하는 시간을 가지며 위 문제점들을 개선한 내용을 정리하고자 합니다. 너무 많고 많은 DTO(VO)들.. 프로젝트 내 VO 혹은 DTO 패키지 안에 필요할 때마다 Class파일을 생성하면 위 사진과 같이 파일수가 매우매우 많아집니다. 여기서 파생되는 문제점들은.. 일단 보기에 안좋습니다..(흐그는드) 더 이상 ClassName이 중복되지 않는 DTO를 만들기가 어려워집니다. 필드들이 겹치는 DTO로 대충 Response를 내리다보니 Over-Fetching을 하게됩니다. DTO를 I.. 2021. 4. 26.
[Spring] 컨트롤러, Model, ModelAndView 사용법 client가 요청을 하면, @Controller에 진입한다. 컨트롤러는 요청에 대한 작업을 수행하고, 뷰쪽으로 데이터를 전달한다. 컨트롤러 클래스 제작 순서 @Controller를 이용해서 클래스를 생성한다. @RequestMapping을 이용해, view의 요청 경로 지정한다. 요청 처리 메소드(로직) 구현한다. 뷰 이름 리턴한다. @Controller // 컨트롤러 지정 public class HomeController { // 뷰의 요청 경로 지정 @RequestMapping(value = "/", method = RequestMethod.GET) public String home(Locale locale, Model model) { // 로직 수행 logger.info("Welcome home!.. 2020. 11. 29.
[Spring] 스프링의 특징 1) 경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다. 2) 스프링은 POJO(Plain Old Java Object) 방식의 프레임워크이다 일반적으로 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다 3) 스프링은 제어반전(IoC : Inversion of Control)을 지원한다. 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다. 4) 스프링은 의존성 주입(DI : Dependency Injection)을 지원한다. 각각의 계층이나 서비스.. 2019. 1. 20.