본문 바로가기

STUDY

(287)
JUnit5 | @ExtendWith, MockMvc, @TestConstructor @ExtendWith JUnit 4의 @RunWith가 JUnit 5에서는 @ExtendedWith로 변경되었음 @SpringBootTest애노테이션에 포함되어 있기 때문에 둘다 명시할 필요는 없음 MockMvc Spring MVC 애플리케이션을 테스트 해볼 수 있게 도와줌 실제 서버의 실행 없이 요청하고 응답받아볼 수 있음 MockMvc과 WebApplicaionContext를 @Autowired애노테이션을 이용해 의존관계 주입하고, setup()메서드로 MockMvc를 초기화 한다. @BeforeEach애노테이션을 명시함으로써 테스트가 실행되기 전 setup()메서드가 실행되어 반복적으로 초기화 할 필요가 없다. @WebMvcTest public class HelloControllerTest { @A..
JUnit5 | @WebMvcTest와 @SpringBootTest 테스트 코드... 짜고싶어요 제발... @WebMvcTest @WebMvcTest는 Web Layer만 테스트할 때 사용 @WebMvcTest(ContollerClassName.class)로 특정 컨트롤러만 인스턴스화 하여 테스트하는 것도 가능 실제 연결이 생성되는 것은 아님 컨트롤러의 의존성은 @MockBean으로 모의 의존관계 생성 및 주입 MockMvc객체를 주입받아 해당 객체를 이용하여 테스트 진행 이렇게 테스트 클래스에 애노테이션을 붙여 사용한다. @WebMvcTest public class WebLayerTest { } 아래와 같이 컨트롤러에 의존관계가 설정되어 있다면, @RestContoller public class HelloController { @Autowired private Hell..
Spring Boot | 컨트롤러 테스트할 때 시큐리티 설정 해제 @WithMockUser가 안 돼서 몇 시간을 날렸다! 테스트코드 공부가 절실.. @WebMvcTest에서 제외할 필터를 설정하면 된다! excludeFilters설정을 통해 시큐리티 설정을 제외한다. @WebMvcTest(controllers = ImageController.class, excludeFilters = { @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = SecurityConfig.class) }) public class ImageControllerTest {@WithMockUser를 사용한다 @Test @WithMockUser public void 모든_이미지_조회() throws Exception {무야호...
Spring Boot | logback 설정 Logback Logback은 spring-boot-starter-web에 포함되어 있기 때문에, 해당 의존성이 추가되어있다면 따로 추가할 필요가 없다. application.properties파일에 loggin.level을 이용해 로깅 설정을 변경할 수 있다. 로깅 시스템의 세분화된 설정을 위해 보통 logback.xml파일로 설정하며, 스프링 부트에서는 logback-spring.xml을 사용할 것을 권장한다. Logback은 프로그래밍 방식, XML, Groovy 방식으로 구성할 수 있다. Logback 0.9.17버전부터 대소문자를 구분하지 않는다. logback-spring.xml 파일 생성 사이에 Logback 세부 설정을 추가하면 된다. appender 로그의 형태를 설정하고, 로그 메시지를..
Spring Boot | RestTemplate RestTemplate Spring Framework에서 제공하는 동기식 템플릿 메소드 API HTTP client로서 보편적인 API요청을 더 쉽게 도와준다 비동기 non-blocking HTTP Client가 필요하다면 WebClient를 사용하면 된다. WebClietnt는 동기 및 비동기, 스트리밍 시나리오를 모두 지원함 비동기를 지원하는 AsyncRestTemplate도 있었지만 스프링 5.0부터 deprecated되었음 -> WebClient를 사용해라.. 어떻게 사용하나.. 일단 spring-boot-starter-web라이브러리가 추가되어있으면 자동으로 하위 항목으로 딸려온다. 보통은 bean으로 등록하여 사용한다. @Bean public RestTemplate restTemplate() ..
HTTP 상태코드 자주 자용되는 코드들만 정리 Http Status Code Http 상태 코드는 Http 요청이 성공적으로 완료되었는지 여부를 나타낸다. 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능! 상태 코드는 다섯 가지로 분류할 수 있다. 1xx (Informational) 2xx (Successful) 3xx (Redirection) 4xx (Client Error) 5xx (Server Error) 1xx 요청이 수신되어 처리 중. 거의 사용하지 않음 2xx - 성공 클라이언트의 요청을 성공적으로 처리했을 때 사용 200 OK 201 Created : 요청이 성공해 그 결과 새로운 리소스가 생성됨. 일반적으로 POST혹은 PUT요청 후 발생하는 응답 202 Accepted : 요청이 접수되었으나,..
REST URI 설계 REST? REpresentational State Transfer의 약자 REST의 기본 원칙을 지키면 RESTful하다고 할 수 있지.. client-servr Stateless Cacheable Uniform interface Layered system Code on demand (optional) REST는 HTTP가 아니다 자원은 명사로 표현 RESTful URI는 자원(resource)을 명사로 표현한다 document 단일 개념(파일 하나, 객체 인스턴스, 데이터베이스 row) 예: users/{id}, /users/admin collection 서버가 관리(server-managed)하는 리소스 디렉터리 서버가 리소스의 URI를 생성하고 관리 예: /members, /users/{id}/a..
Java | SHA-256 SHA Secure Hash Algorithm 가장 널리 사용되는 암호화 해시 함수 중 하나 텍스트 혹은 데이터 파일에 대한 서명을 만드는 데 사용 Java에서 라이브러리 제공 SHA-256은 256bit(32bit)의 해시를 생성 224, 256, 384, 512bit 의 해시를 생성할 수 있음 단방향 함수로, 결과를 원래 값으로 해독할 수 없음 MessageDigest Java에서 제공하는 SHA-256해시를 위한 내장 클래스 MessageDigest는 MD5, SHA-1, SHA-256의 해시 함수를 제공한다. MessageDigest digest = MessageDigest.getInstance("SAH-256"); 해시 얻기 public static String encrypt(String str..