[Spring Boot] JUnit5 로 테스트 하기
2022. 5. 25. 22:35
Spring Boot
간단한 CRUD를 Junit을 사용해서 테스트해보자. UserService 내에 사용자 조회, 가입 메소드가 구현되어 있는데, 내가 구현한 메소드들이 제대로 동작하는지 확인하는 테스트 코드를 작성해본다. @SpringBootTest @TestInstance(TestInstance.Lifecycle.PER_CLASS) @TestMethodOrder(MethodOrderer.OrderAnnotation.class) class UserServiceTest { ... ... Test code ... ... } @SpringBootTest 스프링부트 어플리케이션 테스트 시 필요한 의존성 제공 사용자 가입, 조회 쿼리 테스트를 위해 전체 컨텍스트를 테스트에 올린다. @TestInstance 테스트 인스턴스 생성 단..
JWT 를 간단히 정리해보자
2022. 5. 17. 23:00
Spring Boot
JWT (JSON Web Token) 란? JSON 객체로 정보를 안전하게 전송하기 위한 방법 웹 토큰에 정보를 담아 사용자에게 권한을 부여하거나, 정보를 교환할 때 사용할 수 있다. JWT를 왜 사용할까? 우리가 주로 사용하는 REST API는 HTTP 프로토콜을 기반으로 서비스된다. http는 stateless 해서 상태를 저장하지 않는다. *자세한 내용은 아래 포스팅 참조 https://e-una.tistory.com/47 [Network] Socket 과 HTTP 프로토콜 안녕하세요. 오랜만에 전공책을 펴서 Socket과 HTTP에 대해 간단하게 정리해보려고 합니다. 네트워크 프로그래밍과 소켓 네트워크 프로그래밍이란? 네트워크로 연결되어 있는 서로 다른 두 컴퓨터 e-una.tistory.com ..
[Java] Builder Design Pattern 빌더 패턴
2022. 2. 20. 01:11
Java
안녕하세요. 오늘은 Effective Java 에 소개 된 빌더 패턴에 대해 정리해보겠습니다. 점층적 생성자 패턴 사용자의 정보를 이용한 프로그램을 만든다고 가정 해보자. 요구되는 사용자의 정보는 시퀀스(PK), 이메일, 패스워드,계정 생성일자 등등..일 것이다. 이러한 정보를 담은 사용자 Entity는 PK와 이메일을 가져오는 사용자 목록 조회성 화면이나 이메일, 패스워드를 입력받는 가입 화면 등에 사용된다. 이처럼 서비스마다 사용하는 매개변수가 다르기때문에 개발자는 아래와 같이 매개변수를 늘려가며 생성자를 만들게 된다. public class UserSample { private Long seq; private String email; private String passwd; private Strin..
[Spring Boot] H2 DataBase
2022. 2. 14. 22:02
Spring Boot
안녕하세요. 오늘은 테스트 용도로 사용할 자바 기반의 in-memory RDBMS H2 DataBase Engine을 스프링 부트와 연동해보려고 합니다. http://www.h2database.com/html/main.html H2 Database Engine H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar file size Supp ww..
[Network] Socket 과 HTTP 프로토콜
2022. 2. 9. 23:49
Network
안녕하세요. 오랜만에 전공책을 펴서 Socket과 HTTP에 대해 간단하게 정리해보려고 합니다. 네트워크 프로그래밍과 소켓 네트워크 프로그래밍이란? 네트워크로 연결되어 있는 서로 다른 두 컴퓨터가 데이터를 주고받을 수 있도록 하는 것 전 세계의 네트워크는 물리적으로 연결되어 있다. 물리적인 연결을 기반으로, 소프트웨어적으로는 어떻게 데이터를 송수신할 수 있을까? 이를 위해 운영체제에서 소켓 Socket 이라는 것을 제공한다. 회사 쇼핑몰에서 찾아 온 소켓의 이미지다. 우리가 전력망으로부터 전기를 공급받기 위해 소켓에 콘센트를 꽂는 것과 같이 내부망(inter-net)을 통해 데이터를 송수신하기 위해 소켓을 사용한다는 의미다. 네트워크 통신을 위한 프로그램들은 소켓을 생성하고, 이 소켓을 통해서 서로 데이..
Java 17, 무엇이 바뀌었을까?
2021. 10. 25. 23:33
Java
9월 14일 오라클은 Java 17을 릴리즈했다. Java 8, 11에 이은 LTS(Long-Term Support) 버전으로 오라클은 2년마다 LTS 버전을 릴리즈하고 있다. 이번 토이 프로젝트에 사용하기 위해 몇 가지 변경 사항을 정리해보려고 한다. 참고1) non-LTS 버전들은 다음 버전이 릴리즈되면 지원이 종료된다. 예를 들어, Java 13이 릴리즈되면 Java 12에 대한 지원이 종료되는 것이다. 참고2) https://zdnet.co.kr/view/?no=20181102140004 오라클은 특정시점 이후부터 공식 기술지원을 종료한다. 이를 ‘엔드오브퍼블릭업데이트(EOPU)’라 부른다. EOPU 이후 JDK 버전별 패치는 유상 유지보수 계약을 체결한 상용 라이선스 보유자에게만 제공된다. 결론..
Spring Container & Bean (2)
2021. 8. 30. 23:54
Spring Boot
스프링 빈 조회 - 상속관계 부모 타입으로 조회하면 자식 타입도 함께 조회된다. 그래서 모든 자바 객체의 최고 부모인 Object 타입으로 조회하면, 모든 스프링 빈을 조회한다. public class ApplicationContextExtendsFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class); @Test @DisplayName("부모 타입으로 조회 시 자식이 둘 이상이면 오류 발생") void findBeanByParentTypeDuplicate() { assertThrows(NoUniqueBeanDefinitionException.class, () -> ac..
Spring Container & Bean (1)
2021. 8. 30. 23:20
Spring Boot
스프링 컨테이너 생성 스프링 컨테이너가 생성되는 과정 ApplicationContext를 스프링 컨테이너라고 한다. ApplicationContext는 인터페이스이다. 스프링 컨테이너는 (XML 또는) 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. 이전에 AppConfig를 사용했던 방식이 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만든 것이다. 자바 설정 클래스를 기반으로 스프링 컨테이너를 만들어보자 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); AnnotationConfigApplicationContext 클래스는 ApplicationContext 인터페이..