분류 전체보기 81

[네트워크] UDP(User Datagram Protocol)

UDP(User Datagram Protocol) TCP의 (데이터를 확실하고 효율적으로 전달하기 위한) 복잡한 기능이 필요하지 않은 경우 - 데이터 송, 수신 전에 제어 정보를 주고 받을 필요X - 연결하고 끊는 단계 필요X - 오류 검사 필요X TCP의 그런 기능이 없어도 낭비가 아닌 경우 - 즉 정보 교환이 한개의 패킷으로 가능하고, 오류가 나면 그냥 다 다시 보내버려도 지장없는 경우 예를 들면 DNS 서버 조회 같은 경우에는 UDP를 사용한다. 또, 음성이나 동영상 스트리밍 같은 실시간 통신이 중요한 서비스에 사용한다. 1. 속도가 빨라야한다. 이때는 컨텐츠 재생 타이밍에 맞추어 데이터를 송수신하는 것이 중요하다. TCP를 쓴다면 복잡한 과정 때문에 타이밍을 맞추기 힘들다. 2. 소량의 데이터 몇..

CS/Network 2023.06.16

[네트워크] OSI 7 layer

OSI (Open Systems Interconnection) 7 계층은 통신에서 사용되는 표준 구조이다. 이 구조는 통신 시스템을 계층적으로 분할하여 생각하고 설계할 수 있도록 돕는다. 각 계층은 특정 기능을 수행하며, 이러한 계층화된 구조를 통해 통신 문제를 나누어서 이해하고 해결할 수 있다. 상위 계층에서는 하위 계층에서 특정 기능이 제공된다고 가정하고, 그 특정 기능에 대한 문제를 푸는 것에서 해방된다. 이로써 상위 계층에서는 자신이 제공하는 기능에 대한 문제를 해결하는 데 집중할 수 있게 된다. 상위 계층은 하위 계층이 제공하는 기능을 이용해서 다른 상위 계층에게 서비스를 제공한다. OSI 7 계층 구조 물리 계층 : 물리적인 신호 교환과 관련된 사항 담당 링크 계층 : 하나의 링크로 연결된 노..

CS/Network 2023.05.28

[Spring 스프링] 외부 파일을 이용한 Configuration 그런데 이제 @PropertySource와 @Value를 곁들인

[Spring 스프링] Java기반 Configuration Java 기반으로 빈을 등록할 수 있다. // Java-based Configuration을 하기 위한 클래스로 지정 @Configuration public class AuthenticationPrincipalConfig { // AuthService 빈을 등록 @Bean public AuthService authService() { return new Aut finger-ineedyourhelp.tistory.com 지난번에 Java기반 Configuration을 하는 방법을 포스팅 했다. 하지만 여기에 추가로 properties 파일에 있는 값이 필요할 때가 있을 수도 있다. 예를 들면 다음 사진에서 security-jwt-token-sec..

[Spring 스프링] Java기반 Configuration

Java 기반으로 빈을 등록할 수 있다. // Java-based Configuration을 하기 위한 클래스로 지정 @Configuration public class AuthenticationPrincipalConfig { // AuthService 빈을 등록 @Bean public AuthService authService() { return new AuthService(); } // AuthenticationPrincipalArgumentResolver를 빈 등록하고 authService에 대한 의존성을 주입 @Bean public AuthenticationPrincipalArgumentResolver authenticationPrincipalArgumentResolver() { return new..

[Spring 스프링] xml기반 Configuration

xml 파일로 빈을 등록할 수 있다. 태그 빈 객체를 만들 때 사용 id 속성: 해당 빈 객체를 식별하기 위한 고유 식별자 class 속성: 해당 빈 객체의 클래스 경로 태그 해당 빈 객체의 프로퍼티를 설정하는 데 사용 name 속성: 해당 클래스 내에 선언된 맴버 변수 중, 의존성 주입을 할 변수 이름 ref 속성: 의존하는 빈의 id public class UserService { private UserRepository userRepository; public void setUserRepository(UserRepository userRepository) { this.userRepository = userRepository; } public String sayHello() { return "hell..

[Spring 스프링] HandlerMethodArgumentResolver 알아보기

ArgumentResolver는 요청으로 들어온 값을 원하는 객체로 만들어서 컨트롤러에 전달해 주고 싶을 때 사용한다. 다음은 ArgumentResolver를 구현할 때 사용되는 HandlerMethodArgumentResolver 인터페이스이다. public interface HandlerMethodArgumentResolver { boolean supportsParameter(MethodParameter parameter); @Nullable Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest webRequest, @Nullable WebDataBind..

[Spring 스프링] HandlerInterceptor 알아보기

인터셉터는 전체 path, 또는 특정 path에 대하여 컨트롤러가 실행되기 전 후로, 요청과 응답을 가로채서 적절한 전/후 처리를 하도록 도와준다. 핸들러에 사용자 인증과 같은 중복 코드가 존재할 때, 이를 인터셉터로 옮기면 핸들러의 중복코드를 줄일 수 있다. 다음은 인터셉터를 구현할 때 사용하는 HandlerInterceptor 인터페이스이다. public interface HandlerInterceptor { default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { return true; } default void postHandle(HttpSer..

[Spring 스프링] HandlerInterceptorAdapter 말고 HandlerInterceptor

'org.springframework.web.servlet.handler.HandlerInterceptorAdapter' is deprecated HandlerInterceptorAdapter를 상속해서 인터셉터를 구현하고 있었는데, 노란색 블러가 거슬렸다. 스프링 5.3 버전 이상부터는 권장되지 않는다고 한다. 대신 HandlerInterceptor 또는 AsyncHandlerInterceptor 인터페이스를 직접 사용하라고 적혀있다. 참고로 HandlerInterceptorAdapter는 AsyncHandlerInterceptor를 구현한 것이다. 그나저나 @Deprecated 어노테이션으로 인해 노란 블러로 경고가 뜬 건가보다. 신기방기 그리고 안에 뭐 따로 구현된 것도 없다. @Deprecated..

[Spring 스프링] @SpringBootTest로 테스트할 때 데이터베이스 롤백하기

이번 장바구니 미션에서 컨트롤러 테스트 코드를 짤 때 @SpringBootTest어노테이션을 붙여서 짜면서 데이터베이스 롤백과 관련한 문제를 마주했다. 상품목록에 상품을 수정, 삭제하는 테스트 코드가 각각 있었는데, 항상 자동으로 수정 -> 삭제 순서로 테스트가 돌아가다가, @Order 어노테이션을 이용해서 삭제 -> 수정 순서로 돌려보니 테스트가 깨지는 것을 확인했다. 아무래도 이미 삭제된 상품을 수정하려고 하니 오류가 터진 것이겠군~ 디비 롤백을 해줘야겠네! 생각하고, 예전에 어디선가 @Transactional 어노테이션을 테스트에 붙이면 테스트가 끝난 후 변경된 내용들을 다시 롤백해준다고 들었기에 @Transactional 어노테이션을 붙여보았지만 여전히 테스트 코드는 깨졌다. 공식문서를 확인해보니..

[Spring 스프링] Mock을 이용한 테스트

테스트 더블이란 테스트 코드를 작성할 때, 실제 객체를 대신하여 사용하는 대체 객체를 의미한다. 이번에 페어 로건 덕분에 테스트 더블의 한 종류인 Mock을 처음 접했는데, 이걸 사용해 테스트를 했던 방법을 한번 기록해보았다. (Mock이 뭔지 설명하고 싶지만 아직 Stub와 Mock의 차이를 잘 이해하지 못하였으므로 일단 생략한다.) Mock을 사용하기 위해 Mockito라는 프레임워크를 이용하였다. Mockito는 자바에서 테스트 더블을 쉽게 사용할 수 있도록 도와주는 프레임워크이다. Mockito framework site Intro Why How More Who Links Training Why drink it? Mockito is a mocking framework that tastes real..

1 2 3 4 5 ··· 9