Spring Framework/spring

간단한 Rest Docs 작성 예시 [build.graddle.kt] plugin { id("com.epages.restdocs-api-spec") version "0.17.1" } configure { setServer("http://localhost:9999") title = "Rest API 문서" description = "Rest API 문서" version = "0.1.0" format = "yaml" outputDirectory = "build/docs" outputFileNamePrefix = "rest_docs" } val asciidoctorExtensions: Configuration by configurations.creating dependencies { testImplementa..
Spring Unit Test에서 컨트롤러 테스트와 Rest Docs 결합 시, 빌드 시간이 오래 걸리는 문제점에 대한 해결 방안 작성 현재 개발 상황 각각의 테스트 클래스에서 @WebMvcTest 사용 => 테스트마다 Spring Context를 다시 띄우게 된다. 이 문제점을 해결하기 위해 팩토리 패턴으로 하나의 추상 클래스에서 다음과 같이 작성하여 빌드 시간 단축 현재 구조의 문제점 @MockBean은 @SpyBean과 함께 Mockito가 아닌, Spring-test에서 제공되는 어노테이션이다 @MockBean을 사용하는 테스트 클래스마다 Spring Context가 새로 띄워진다. @MockBean을 사용하는 테스트 클래스가 많아지는만큼 빌드 속도가 느려지게 된다. 컨트롤러 테스트에서 Sprin..
스프링을 공부하다가 우연히 @RequestBody와 @ModelAttribute를 통해 값을 바인딩할 때 오류를 겪는 상황을 발견하고, 평소 Class 바인딩은 자연스럽게 @ModelAttribute로, Json과 같은 타입은 자연스럽게 @RequestBody로 작성했었던, 아무 생각 없이 스프링을 공부했던 나 자신을 돌아보며 오늘 글을 작성하려한다. 이를 이해하기 위해서는 우선 HTTP Message에 대한 이해가 필요하다. HTTP Message는 우리가 어떤 요청을 보내거나 요청에 대한 응답을 보낼 때, 서버와 클라이언트가 서로 데이터를 교환하는 방식이다. 데이터를 요청할 때 부르는 용어인 Rquest에는 서버가 특정 동작을 수행하도록 하는 메시지를 담고 있고, 총 4개의 섹션으로 구분하고 있는데 ..
이번 글에서는 스프링에서 타일즈을 설정하는 방법을 알아보겠습니다. 1. [pom.xml] -> 타일즈 관련 dependency 추가 다른 디펜던시들~ ~~ ~~ org.apache.tiles tiles-core 2.2.2 org.apache.tiles tiles-extras 2.2.2 org.apache.tiles tiles-servlet 2.2.2 org.apache.tiles tiles-jsp 2.2.2 org.apache.tiles tiles-api 2.2.2 2. [servlet-context.xml] -> 타일즈 관련 설정 - 이 설정은 웹 요청이 들어올 때, 뷰리졸버로 요청에 맞는 페이지를 호출하는 설정입니다. - 지금 뷰리졸버에 대한 설정을 1번으로 해줬는데, 이는 기존의 뷰리졸버에 의한 작..
이전글에는 스프링 mvc 게시판을 만들기 위한 기본적인 셋팅을 다루었고, 오늘 글에서는 Controller부터 DB작업까지 어떻게 이루어지는지 만들어 보도록 하겠다. - 기본 패키지 아래에 controller, service, dao 패키지를 만들어 주었다. - 프로젝트 패키지의 구성은 아래처럼 나눌 수도 있고, 업무 단위로도 나눌 수 있다고 한다.(e.g 로그인, 쇼핑 등등) - 패키지를 만들었으면, service와 dao 패키지에 service와 dao Interface를 먼저 만들어주고, - 각 패키지에 각각의 interface를 구현한 class를 아래 그림과 같이 만들어 준다. - service 인터페이스 소스 - 처음 인터페이스를 만들면 텅텅 비어있기 때문에 아래와 같은 메서드를 작성해준다 p..
MVC 프로젝트 만들기 - [file] -> [New] -> [Spring Legacy Project] 클릭 - [project name]에는 생성하고자 하는 프로젝트의 이름을 입력 - [Templates] -> [Persistence] -> [Spring MVC Project] 클릭 - [Next] 클릭 - [Finish]를 클릭하면, MVC 프로젝트가 생성이 된다. - 아래 소스는 [Web.xml]인데, 톰켓이 실행이 되고 url 요청이 들어오면, 서블릿 매핑에 의해 그 요청을 처리하고, 첫 번째로는 [servlet-context.xml]을 로드하고, 두 번째로 [root-context.xml]을 로드하게 된다. contextConfigLocation /WEB-INF/spring/root-contex..
이번에는 @어노테이션으로 트랜잭션을 걸어보려고 한다. [context-datasource.xml]에 다음 소스와 같이 추가 어노테이션에 대한 설명 -> @transactional 설명 - readOnly의 기본값은 false - 스프링의 트랜잭션은 Service 계층에서 사용하는 것이 바람직! ​ [BoardServiceImp.java] package com.sts.hello.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annot..
트랜잭션이란? - 데이터베이스의 상태를 변화시키는 작업(select,insert,update,delete)의 단위 - 2개 이상의 쿼리를 하나의 커넥션으로 묶고, DB에 전송하고 이 과정에서 오류가 날 경우 모든 과정을 되돌림 - 하나 이상의 쿼리에서 동일한 Connection 객체를 유지하는 것 - DB와 JAVA언어가 데이터를 주고 받는 과정에서 원자성을 부여하는 작업 ​ 스프링에서의 트랜잭션이란? - 다이나믹 프록시와 AOP 기술을 통해 트랜잭션을 통제할 수 있음. ​ 스프링에서 트랜잭션을 설정하는 방법? 1. xml 2. @어노테이션 ​ 3. AOP에 의한 트랜잭션 선언 ​ 우선은 xml에서 트랜잭션을 설정하는 방법을 해보려고한다. [context-datasource.xml] 설정 - transa..
iron_jin
'Spring Framework/spring' 카테고리의 글 목록