framework
-
Spring Boot Logback 설정 Logback 로깅 프레임워크 중 하나로 SLF4J의 구현체이다. Logback은 logback-core, logback-classic, logback-access의 3가지 모듈로 나뉜다. logback-core는 다른 두 모듈을 위한 기반 역할을 한다. Appender와 Encoder(Layout) 인터페이스가 속한다. logback-classic은 core에서 확장된 모듈로, core와 SLF4J API 라이브러리를 가진다. Logger 클래스가 여기에 속한다. logback-access는 서블릿 컨테이너와 통합되어 HTTP 액세스에 대한 로깅 기능을 제공한다. Logback을 이용하여 로깅을 수행하기 위해 필요한 주요 설정 요소로는 Logger, Append..
[Spring] Logback 설정Spring Boot Logback 설정 Logback 로깅 프레임워크 중 하나로 SLF4J의 구현체이다. Logback은 logback-core, logback-classic, logback-access의 3가지 모듈로 나뉜다. logback-core는 다른 두 모듈을 위한 기반 역할을 한다. Appender와 Encoder(Layout) 인터페이스가 속한다. logback-classic은 core에서 확장된 모듈로, core와 SLF4J API 라이브러리를 가진다. Logger 클래스가 여기에 속한다. logback-access는 서블릿 컨테이너와 통합되어 HTTP 액세스에 대한 로깅 기능을 제공한다. Logback을 이용하여 로깅을 수행하기 위해 필요한 주요 설정 요소로는 Logger, Append..
2023.02.05 -
Spring REST Docs + Swagger Swagger, Spring REST Docs 간단한 설명 자바로 API를 개발하게 되면 일반적으로 Spring REST Docs와 Swagger 중 하나를 사용하여 API 문서화를 진행하게 된다. Spring Rest Docs와 Swagger의 특징은 아래와 같다. [Swagger] API 테스트가 가능하다. API 문서 생성이 자동으로 이루어진다. 프로덕션 코드에 Swagger 문서화를 위한 어노테이션이 추가된다. [Spring REST Docs] 테스트 코드 작성을 강제하여 API 문서가 신뢰성이 있다. 테스트 성공 이후 생성된 스니펫으로 직접 문서를 작성해야 한다. API 테스트 불가. 프로덕션 코드에 API 문서 관련 코드가 추가되면 컨트롤러 단이..
[Spring] Spring REST Docs, Swagger 조합. restdocs-api-specSpring REST Docs + Swagger Swagger, Spring REST Docs 간단한 설명 자바로 API를 개발하게 되면 일반적으로 Spring REST Docs와 Swagger 중 하나를 사용하여 API 문서화를 진행하게 된다. Spring Rest Docs와 Swagger의 특징은 아래와 같다. [Swagger] API 테스트가 가능하다. API 문서 생성이 자동으로 이루어진다. 프로덕션 코드에 Swagger 문서화를 위한 어노테이션이 추가된다. [Spring REST Docs] 테스트 코드 작성을 강제하여 API 문서가 신뢰성이 있다. 테스트 성공 이후 생성된 스니펫으로 직접 문서를 작성해야 한다. API 테스트 불가. 프로덕션 코드에 API 문서 관련 코드가 추가되면 컨트롤러 단이..
2023.01.08 -
WebSocket, SockJS, STOMP 소개 WebSocket WebSocket은 기존의 단방향 HTTP 프로토콜과 호환되어 양방향 통신을 제공하기 위해 개발된 프로토콜이다. 웹 소켓은 HTTP를 사용하는 네트워크 데이터 통신의 단점을 보완하는데 그 목적이 있다. 웹 소켓을 설명하기 이전에, 웹 소켓의 등장 이전에는 HTTP 통신의 단점을 어떻게 해결하려고 했는지 알아보겠다. WebSocket 등장 이전 모든 HTTP를 사용한 통신은 클라이언트가 먼저 요청을 보내고, 그 요청에 따라 웹 서버가 응답하는 형태이며 웹 서버는 응답을 보낸 후 웹 브라우저와의 연결을 끊는다. 이러한 통신 방식을 반이중 통신(Half Duplex)라고 한다. 실시간 검색어와 같이 서버에서 제공하는 데이터를 항상 최신으로 유..
[Spring] Web-Socket, SockJS, STOMP 이론WebSocket, SockJS, STOMP 소개 WebSocket WebSocket은 기존의 단방향 HTTP 프로토콜과 호환되어 양방향 통신을 제공하기 위해 개발된 프로토콜이다. 웹 소켓은 HTTP를 사용하는 네트워크 데이터 통신의 단점을 보완하는데 그 목적이 있다. 웹 소켓을 설명하기 이전에, 웹 소켓의 등장 이전에는 HTTP 통신의 단점을 어떻게 해결하려고 했는지 알아보겠다. WebSocket 등장 이전 모든 HTTP를 사용한 통신은 클라이언트가 먼저 요청을 보내고, 그 요청에 따라 웹 서버가 응답하는 형태이며 웹 서버는 응답을 보낸 후 웹 브라우저와의 연결을 끊는다. 이러한 통신 방식을 반이중 통신(Half Duplex)라고 한다. 실시간 검색어와 같이 서버에서 제공하는 데이터를 항상 최신으로 유..
2023.01.06 -
Job 관련 내용 정리 개요 스프링 배치의 Job에 대해 학습한 내용을 기록하려 한다. 먼저 Job에 대해서 알아본다. Job의 개념은 무엇인지, 스프링 배치에서 제공하는 Job에는 어떤 것들이 있는지 알아본다. 다음으로 Job을 생성하고 설정하기 위해 어떻게 해야하는지 알아본다. Job 개념 Job은 배치 계층 구조에서 가장 상위에 있는 개념으로 하나의 배치 작업 자체를 의미한다. Job Configuration을 통해 생성되는 객체 단위로서 배치 작업을 어떻게 구성하고 실행할 것인지 전체적으로 설정하고 명세해 놓은 객체이다. Job은 여러 Step을 포함하고 있는 컨테이너로서 반드시 한개 이상의 Step으로 구성해야 한다. 스프링 배치는 Job을 인터페이스로 제공하며, Job의 기본 구현체도 함께 제..
[Spring Batch] Job 관련 내용 정리Job 관련 내용 정리 개요 스프링 배치의 Job에 대해 학습한 내용을 기록하려 한다. 먼저 Job에 대해서 알아본다. Job의 개념은 무엇인지, 스프링 배치에서 제공하는 Job에는 어떤 것들이 있는지 알아본다. 다음으로 Job을 생성하고 설정하기 위해 어떻게 해야하는지 알아본다. Job 개념 Job은 배치 계층 구조에서 가장 상위에 있는 개념으로 하나의 배치 작업 자체를 의미한다. Job Configuration을 통해 생성되는 객체 단위로서 배치 작업을 어떻게 구성하고 실행할 것인지 전체적으로 설정하고 명세해 놓은 객체이다. Job은 여러 Step을 포함하고 있는 컨테이너로서 반드시 한개 이상의 Step으로 구성해야 한다. 스프링 배치는 Job을 인터페이스로 제공하며, Job의 기본 구현체도 함께 제..
2022.12.19 -
인증/인가 오류 처리 우리는 Spring Security를 통해 사용자의 권한을 처리하게 된다. Security 설정을 통해 특정 엔드포인트로의 요청에 필요한 권한 등을 설정할 수 있다. @Bean public SecurityFilterChain oauth2SecurityFilterChain(HttpSecurity http) throws Exception { http // ... .and() .authorizeRequests() .antMatchers("/end-point1").hasRole(Role.USER.name()) .antMatchers("/end-point2").hasRole(Role.ADMIN.name()) .antMatchers("/end-point3").permitAll() // ... ..
[Spring Security] AuthenticationEntryPoint, AccessDeniedHandler를 통한 인증/인가 오류 처리인증/인가 오류 처리 우리는 Spring Security를 통해 사용자의 권한을 처리하게 된다. Security 설정을 통해 특정 엔드포인트로의 요청에 필요한 권한 등을 설정할 수 있다. @Bean public SecurityFilterChain oauth2SecurityFilterChain(HttpSecurity http) throws Exception { http // ... .and() .authorizeRequests() .antMatchers("/end-point1").hasRole(Role.USER.name()) .antMatchers("/end-point2").hasRole(Role.ADMIN.name()) .antMatchers("/end-point3").permitAll() // ... ..
2022.12.15 -
스프링 배치(Spring Batch) 스프링 배치란? Spring Batch는 대용량 일괄처리의 편의를 위해 설계된 가볍고 포괄적인 배치 프레임워크이다. 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 레코드 처리에 필수적인 재사용 가능한 기능을 제공한다. 또한 최적화 및 파티셔닝 기술을 통해 대용량 및 고성능 일괄 작업을 가능하게 하는 고급 기술 서비스 및 기능을 제공한다. Spring Batch Meta Data 스프링 배치는 배치의 실행 및 관리를 위한 목적으로 여러 도메인들(Job, Step, JobParameters 등)의 정보들을 저장, 업데이트, 조회할 수 있는 스키마를 제공한다. 과거, 현재의 실행에 대한 자세한 정보, 실행에 대한 성공과 실패..
[Spring Batch] 스프링 배치 기초, 메타 데이터와 도메인스프링 배치(Spring Batch) 스프링 배치란? Spring Batch는 대용량 일괄처리의 편의를 위해 설계된 가볍고 포괄적인 배치 프레임워크이다. 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 레코드 처리에 필수적인 재사용 가능한 기능을 제공한다. 또한 최적화 및 파티셔닝 기술을 통해 대용량 및 고성능 일괄 작업을 가능하게 하는 고급 기술 서비스 및 기능을 제공한다. Spring Batch Meta Data 스프링 배치는 배치의 실행 및 관리를 위한 목적으로 여러 도메인들(Job, Step, JobParameters 등)의 정보들을 저장, 업데이트, 조회할 수 있는 스키마를 제공한다. 과거, 현재의 실행에 대한 자세한 정보, 실행에 대한 성공과 실패..
2022.12.13 -
마이바티스(MyBatis) MyBatis 공식 사이트 확인 마이바티스(MyBatis)는 SQL을 XML에 편리하게 작성할 수 있는 SQL Mapper이다. 사용 설정 build.gradle에 의존 관계를 추가한다. dependencies { implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0' } application.yml에 다음 내용을 추가한다. mybatis: type-aliases-package: com.example.dbaccess.domain configuration: map-underscore-to-camel-case: true mapper-locations: classpath:mapper/**/*.xml log..
[Spring] 마이바티스(MyBatis)마이바티스(MyBatis) MyBatis 공식 사이트 확인 마이바티스(MyBatis)는 SQL을 XML에 편리하게 작성할 수 있는 SQL Mapper이다. 사용 설정 build.gradle에 의존 관계를 추가한다. dependencies { implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0' } application.yml에 다음 내용을 추가한다. mybatis: type-aliases-package: com.example.dbaccess.domain configuration: map-underscore-to-camel-case: true mapper-locations: classpath:mapper/**/*.xml log..
2022.12.11 -
JDBC Template JdbcTemplate 공식 메뉴얼 확인 스프링이 제공하는 JdbcTemplate은 JDBC를 편리하게 사용할 수 있게 도와준다. JdbcTemplate은 spring-jdbc 라이브러리에 포함되어 있어 별도의 복잡한 설정 없이 바로 사용할 수 있다. 또한 JdbcTemplate은 템플릿 콜백 패턴을 사용하여 JDBC를 직접 사용할 때 발생하는 커넥션 획득, statement 준비 및 실행, 커넥션 및 statement, resultset 종료, 트랜잭션을 위한 커넥션 동기화, 예외 변환 등 대부분의 반복 작업을 대신 처리해준다. JdbcTemplate을 사용하면 개발자는 SQL 작성, 파라미터 전달, 응답값 매핑만 하면 된다. 의존성 설정 JdbcTemplate을 사용하기 위해..
[Spring] JDBC TemplateJDBC Template JdbcTemplate 공식 메뉴얼 확인 스프링이 제공하는 JdbcTemplate은 JDBC를 편리하게 사용할 수 있게 도와준다. JdbcTemplate은 spring-jdbc 라이브러리에 포함되어 있어 별도의 복잡한 설정 없이 바로 사용할 수 있다. 또한 JdbcTemplate은 템플릿 콜백 패턴을 사용하여 JDBC를 직접 사용할 때 발생하는 커넥션 획득, statement 준비 및 실행, 커넥션 및 statement, resultset 종료, 트랜잭션을 위한 커넥션 동기화, 예외 변환 등 대부분의 반복 작업을 대신 처리해준다. JdbcTemplate을 사용하면 개발자는 SQL 작성, 파라미터 전달, 응답값 매핑만 하면 된다. 의존성 설정 JdbcTemplate을 사용하기 위해..
2022.12.10 -
스프링 초기 DB 스크립트 실행 스프링 애플리케이션 실행 시 초기 테이블 생성 및 데이터 입력이 필요한 경우가 있다. schema.sql 파일과 data.sql 파일을 작성하여 이를 해결할 수 있다. schema.sql : 테이블 생성 스크립트 data.sql : 데이터 입력 스크립트 스프링은 기본적으로 임베디드 DB(h2)일 때 classpath 위치(/src/main/resources)에서 위 스크립트 파일을 읽어서 DB를 초기화 한다. 스프링 application.yml 파일을 통해 위 설정을 커스텀 하여 사용할 수 있다. 아래는 커스텀 한 예시이다. spring: datasource: driver-class-name: org.h2.Driver url: jdbc:h2:mem:testdb userna..
[Spring] 애플리케이션 실행시 DB 테이블 및 데이터 입력스프링 초기 DB 스크립트 실행 스프링 애플리케이션 실행 시 초기 테이블 생성 및 데이터 입력이 필요한 경우가 있다. schema.sql 파일과 data.sql 파일을 작성하여 이를 해결할 수 있다. schema.sql : 테이블 생성 스크립트 data.sql : 데이터 입력 스크립트 스프링은 기본적으로 임베디드 DB(h2)일 때 classpath 위치(/src/main/resources)에서 위 스크립트 파일을 읽어서 DB를 초기화 한다. 스프링 application.yml 파일을 통해 위 설정을 커스텀 하여 사용할 수 있다. 아래는 커스텀 한 예시이다. spring: datasource: driver-class-name: org.h2.Driver url: jdbc:h2:mem:testdb userna..
2022.12.10