본문 바로가기

반응형

분류 전체보기

(236)
[SpringBoot] 예외처리 - 1 (BasicErrorController) SpringBoot 로 REST api 를 구현하다 보면 요청에 대한 예외가 발생하는 경우가 있다. 이러한 예외 처리를 잘해주지 않으면 사용자가 원하는 응답을 얻지 못하거나 애플리케이션 자체가 오류로 중단될 수 있다. SpringBoot 에서는 @ExceptionHandler, HandlerExceptionResolver, @ControllerAdvice, ResponseStatusException 등의 예외처리 방법을 제공해준다. BasicErrorController SpringBoot 에서 제공하는 예외 처리 방법들을 살펴보기 전에, SpringBoot 의 기본 예외 처리 방법을 알아보려고 한다. Spring 은 Controller 를 통해서 클라이언트의 요청을 수신하는데, Controller 에서 ..
[SpringBoot] JUnit 을 이용한 테스트 코드 작성 SpringBoot 프로젝트에서 기능들의 유닛테스트를 진행하기 위해서 테스트 코드를 작성하려 한다. 테스트 코드를 작성하기 위해서 JUnit 이라는 테스트 프레임워크를 사용하려고 한다. JUnit 은 자바 테스트 프레임워크로 다양한 어노테이션과 메서드를 통해서 테스트 코드 작성을 편리하게 해준다. 1. JUnit 이란? JUnit 이란 자바 프로그래밍 언어용 단위 테스트 프레임워크이다. @Test, @BeforeEach, @AfterEach 와 같은 어노테이션을 기반으로 테스트를 지원한다. 그리고 단정문 (Assert) 메서드를 통해서 테스트 케이스의 사용자의 기대값에 대한 기능의 수행 결과를 확인할 수 있다. assert 메서드의 결과는 테스트 케이스의 성공 실패 여부를 반환한다. JUnit 은 3가 ..
[SpringBoot] SpringBoot 에 lombok 적용하기 1. lombok lombok 은 자바 라이브러리 중 하나로 자바 개발시에 반복적으로 구현되는 getter, setter, toString 등을 자동으로 생성해주어 코드를 간결하게 유지하고 생산성을 높여주는 라이브러리이다. 어노테이션을 기반으로 동작하며, 클래스에 어노테이션을 추가하여 컴파일 과정에서 실제 기능이 생성되는 방식으로 동작한다. 즉 소스코드에서는 어노테이션만 보이고 해당 메서드들은 보이지 않지만 실제로 컴파일 된 결과물 .class 파일에는 코드가 생성되어지게 된다. lombok 을 사용하면 반복적인 코드가 제거되어 코드의 가독성이 좋아지고 유지보수에 유리해진다. 또한 반복적인 코드 작성의 시간이 줄어 생산성이 향상된다. 하지만 경우에 따라서는 코드가 직관적이지 않고 어노테이션으로 생략되는 ..
[Network] SSL 암호화 (대칭키, 공개키, 개인키) 1. SSL SSL 은 Secure Socket Layer 의 줄임말로 웹서버와 브라우저 사이의 보안을 위해 사용되는 프로토콜이다. SSL 은 Certificate Authority (CA) 라고 불리는 3rd party 를 통해 서버와 클라이언트의 인증에 사용한다. - HTTPS SSL 적용한 대표적인 사례가 HTTPS 이다. HTTPS 는 HTTP 에 SSL 을 적용하여 보안을 강화한 프로토콜이다. HTTPS 는 공개키와 대칭키 방식을 혼합하여 데이터를 암호화하여 전달한다. 2. SSL 의 암호화 SSL 에서 데이터를 암호화 하기 위해서 사용하는 일종의 비밀번호를 키 (key) 라고 한다. 이 키에 따라서 암호화 된 결과가 달라지기 때문에 키를 모르면 복호화를 수행할 수 없다. 암호화의 방식은 이 키..
[Spring] Database 연동 - 4 (JPA) 1. JPA JPA 는 Java Persistence API 의 줄임말로 Java 표준 ORM 인터페이스이다. ORM 은 Object Relational Mapping 의 줄임말로 객체와 RDB 를 매핑하는 기술이다. 객체와 DB 를 매핑하면서 SQL 쿼리 중심이 아닌 객체 중심의 코딩을 할 수 있도록 한다. JPA 는 Java 표준 ORM 인터페이스로 JPA 의 기능을 사용하면 기존의 반복적인 코드는 물론이고 기본적인 SQL 쿼리를 자동으로 생성해주어 코드를 간결하게 유지할 수 있다. 또한 JPA 를 사용하여 데이터를 객체와 매핑하게 되면, SQL 과 데이터 중심의 설계에서 Java 언어와 객체 중심의 설계로 전환할 수 있다. 2. 환경 설정 JPA 를 사용하기 위해서는 application 의 라이브..
[SpringBoot] Logging - 2 (Logback) 1. Logback Logback 은 자바 로깅 프레임워크 중 하나로 Spring boot 에서 기본 로깅 모듈로 사용하고 있는 모듈이다. Spring boot 에서 dependency 를 설정할 때 spring-boot-starter-web 패키지를 설정하는데, 해당 패키지에 Logback 이 포함되어 있다. Logback 은 일반적으로 logback.xml 파일을 통해 설정하는데, Spring boot 환경에서는 logback-spring.xml 파일을 통해서 Logback 을 설정한다. Logback 의 설정으로는 로그를 출력하는 방식 (콘솔, 파일, 네트워크 통신 등등), Spring Profile 별 로그 설정, 로그 레벨, 로그 형식 등등의 기능을 설정할 수 있다. 2. Logback 설정 -..
[SpringBoot] Logging - 1 (JCL, Slf4j, logback, log4j, log4j2) 1. Spring logging 예전의 Spring 은 JCL (Jakarta Commons Logging) 을 사용하여 로깅을 구현하였다. JCL 은 인터페이스 형태로 되어 있는데, 이를 구현한 구현체를 사용하여 여러 로깅 구현체로 교체하면서 사용할 수 있다. JCL 의 구현체는 Configuration 을 통해서 설정할 수 있는데, JCL 이 구현체를 선택하는 시점은 컴파일 시점이 아닌 런타임 시점이다. 그렇기 때문에 JCL 은 클래스 로더에 의존적인 방식으로 로깅 구현체를 찾게된다. JCL 은 클래스 로더를 통해 컴파일 시점에 로깅 구현체를 찾는 방식에서 가비지 컬렉션이 제대로 작동하지 않는 문제가 발생한다. 이러한 문제를 해결하기 위해 클래스 로더 대신에 컴파일 시점에 구현체를 선택하는 방식으로 ..
[SpringBoot] Database 연동 - 3 (JdbcTemplate) 1. JdbcTemplate Spring 에는 Database 를 사용할 수 있는 방법으로 JdbcTemplate 이 있다. 순수 JDBC 에서는 DB Connection 을 얻고 해제하는 등의 DB 작업을 위해 반복되는 코드들이 있다. JdbcTemplate 은 이러한 반복 코드들을 제거할 수 있도록 되어서 사용에 편리하고 자원을 얻고 해제하는 등의 코드를 작성하면서 발생할 수 있는 문제들을 피할 수 있도록 해준다. 물론 SQL 쿼리문은 직접 작성하여야 한다. JdbcTemplate 은 사용할 때 설정은 앞서 JDBC 를 사용하기 위해서 했던 Spring Datasource 등의 설정과 동일하게 수행하면 된다. 2. 구현 JdbcTemplate 으로 구현 시에는 기존의 JDBC 와는 다르게 Connec..

반응형