일기장/하루 정리

220318 [금] Mybatis 환경설정 2 , JUnit

Supersett 2022. 3. 18. 13:12

Rest Api가 뭐지?

REST 기반으로 서비스 API를 구현한 것
최근 OpenAPI(누구나 사용할 수 있도록 공개된 API: 구글 맵, 공공 데이터 등), 마이크로 서비스(하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처) 등을 제공하는 업체 대부분은 REST API를 제공한다.

API(Application Programming Interface)
데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것
출처 : https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

 

Spring에서의 MVC 패턴2 Annotation

Model : 컨트롤러 인터페이스를 상속받은 클래스들이 모델(요청처리)의 역할을 합니다. 이름이 xxxController.java 입니다.

View : 처리결과를 보여줍니다.

Controller : 프론트컨트롤러(Dispatcher Servlet)


[오늘의 계획]
1. 수업내용 복습

2. 파이썬 설치 → Python 3.10.3 

3. 7시반 파이널프로젝트 회의

[오늘의 공부]

@RequestMapping 어노테이션을 클래스에 선언하면 Controller 클래스의 모든 요청 처리 메소드의 요청 URL주소 앞부분에 공통적으로 포함되는 URL 주소 설정이 가능하다.

 

[Mybatis Framework에서 제공되는 로그를 Spring 로그 구현체로 기록되도록 설정하는 방법]

1. [Log4Jdbc Log4j2 JDBC 4] 라이브러리를 pom.xml 에 빌드 등록.

2. DataSource 관련 클래스를 Spring Bean으로 등록한 bean 엘리먼트에서 driverClassName 필드값과 url 필드값을 변경하여 인젝션 처리 - [root-context.xml]

ㅡ dao 관련 framework에서 발생되는 로그를 전달받아 처리하기 위해 driverClassName 필드값과 url 필드값을 라이브러리에서 제공되는 값으로 변경하여 인젝션 처리한다

3. [src/main/resources] 폴더에 log4jdbc.log4j2.properties 파일을 작성한다.

log4jdbc.spylogdelegator.name = net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator

4. [src/main/resources] 폴더의 log4j.xml 파일에서 로그 이벤트에 대한 기록 설정.


[테스트 프로그램을 만들어보자]

test 폴더에 만들것이다

[Spring Framework를 이용하여 테스트 프로그램을 작성해 모듈(단위 프로그램) 테스트 하는 방법]

1. JUnit 라이브러리와 spring-test 라이브러리를 프로젝트에 빌드처리 - pom.xml

2. [src/test/resources] 폴더의 [log4j.xml] 파일 변경 - 메인프로그램의 log4j.xml 파일과는 다르다 - 기록할내용이 다름.

3. [src/test/java] 폴더에 테스트 클래스 작성 - 테스트 메소드를 이용하여 모듈 테스트 진행

 

[테스트 클래스 설정]

어노테이션을 설정할 때, scope부분을 주석처리 해놔야 @Runwith 어노테이션이 적용이 된다.

@Runwith(SpringJUnit4ClassRunner.class)

 : 테스트 메소드를 호출하여 실행하기 위한 클래스(Clazz)를 설정하는 어노테이션

ㅡ value 속성 : 테스트 메소드를 호출하기 위한 클래스(clazz)를 속성값으로 설정 - 다른 속성이 없는경우 속성값만 설정 가능.

@ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/spring/root-context.xml"})

ㅡ locations 속성 : Bean Configuration File을 배열의 요소로 지정하여 속성값으로 설정

ㅡ Bean Configuration File 경로는 file 접두사를 사용하여 파일 시스템 경로 표현

@AutoWired

ㅡ 어노테이션을 사용하여 DataSource 관련 클래스의 Spring Bean을 필드에 인젝션 처리

@Test

[서비스 클래스 설정]

@Runwith(SpringJUnit4ClassRunner.class)

@WebAppConfiguration

 : webApplicationContext 객체(spring contatiner)를 이용하여 spring bean을 관리하도록 설정하는 어노테이션

@ContextConfiguration(locations ={"file:src/main/webapp/WEB-INF/spring/root-context.xml",

                                                 "file:src/main/webapp/WEB-INF/spring/app-Servlet/servlet-context.xml"})

Logger 필드 선언

@Autowired

@Test

 

[컨트롤러 클래스 설정]

@Runwith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations ={"file:src/main/webapp/WEB-INF/spring/**/*"})

ㅡ [*] 패턴문자를 사용하여 Bean Configuration File 설정 가능

ㅡ [**] 형식으로 폴더를 표현하면 0개 이상의 하위 폴더를 표현

Logger 필드 선언

@Autowired

WebApplicationContext 필드 선언

ㅡ WebApplicationContext : SpringMVC(웹프로그램)에서 사용하는 Spring Container 객체

MockMvc 필드 선언

ㅡ MockMvc : 요청과 응답을 가상으로 제공하기 위한 클래스

@Before

: 테스트 메소드 호출 전 실행될 명령을 작성한 메소드에 설정하는 어노테이션 - 초기화 작업 전

 


▶이런식으로 요청url 주소로 이동하게끔 <c: > 사용하면 된다.