STUDY/백엔드
-
Spring BatchSTUDY/백엔드 2021. 3. 3. 01:00
대용량의 데이터를 처리하는 어플리케이션을 배치 어플리케이션이라고 한다. 1. 배치 어플리케이션 조건 대용량 데이터 - 배치 어플리케이션은 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리를 할 수 있어야 한다. 자동화 - 배치 어플리케이션은 심각한 문제 해결을 제외하고는 사용자 개입 없이 실행되어야 한다. 견고성 - 배치 어플리케이션은 잘못된 데이터를 충돌/중단 없이 처리할 수 있어야 한다. 신뢰성 - 배치 어플리케이션은 무엇이 잘못되었는지를 추적할 수 있어야 한다. (로깅, 알림) 성능 - 배치 어플리케이션은 지정한 시간 안에 처리를 완료하거나 동시에 실행되는 다른 어플리케이션을 방해하지 않도록 수행되어야한다. 대용량 데이터를 실시간으로 처리하기에는 조회 시간이나 서버 부하가 심해지기 때..
-
메모리 영역STUDY/백엔드 2021. 2. 8. 17:57
static 영역 패키지나 클래스 정보가 올라갑니다. import된 패키지를 static 영역에 배치한다. 프로그램 상의 모든 클래스를 static 영역에 배치한다. 필드 부분에서 선언된 변수(전역 변수)와 정적 멤버변수(static이 붙은)는 static 영역에 데이터가 저장된다. static 영역의 데이터는 프로그램의 시작부터 JVM이 종료가 될 때까지 메모리에 남아있게 된다. 따라서, 전역변수를 무분별하게 많이 사용하면 메모리가 부족할 우려가 있어 필요한 변수만 사용해야 한다. 또한, 전역변수는 읽기 전용이 아닌 경우에는 누구나 접근해서 값을 수정하면 혼란을 가져올 수 있기 때문에 가능한 사용하지 말아야 합니다. class영역 혹은 method 영역 이라고도 불립니다. stack 영역 여는 중괄호 ..
-
RestTemplate & WebClientSTUDY/백엔드 2021. 2. 3. 18:57
1. RestTemplate - Spring 3부터 지원 되었고 REST API 호출이후 응답을 받을 때까지 기다리는 동기방식이다. - Blocking I/O 기반의 Synchronous API (순서가 있는 처리) 스프링 부트는 Rest Template을 쉽게 사용할 수 있도록 빈을 등록해준다. 이때 빈은 RestTemplateBuilder를 빈으로 등록해 준다. Builder를 주입받아서 필요시마다 Build를 하고 RestClient를 생성해서 사용할 수 있다. 어플리케이션이 RestTemplate를 생성하고, URI, HTTP메소드 등의 헤더를 담아 요청한다. RestTemplate 는 HttpMessageConverter 를 사용하여 requestEntity 를 요청메세지로 변환한다. RestT..
-
@Mock, @MockBeanSTUDY/백엔드 2021. 2. 3. 17:06
1. @Mock - org.mockito.Mock - Mockito 라이브러리 내에 위치한다. - when이나 given 등을 이용해서 mock 객체가 특정 메서드를 호출했을 때, 동작하는 방식을 설정해 줄 수 있다. - spring에서 어느 의존성도 필요하지 않을 때 사용된다. - @InjectMocks과 함께 사용될 수 있다. @Mock 객체를 @InjectMocks 객체에 주입시킬 수 있다. @Mock private TestMapper testMapper; @InjectMocks private TestService testService; @BeforeEach void init() { this.testService = new TestService(testMapper);} @Test void test(..
-
@ControllerAdvice / @RestControllerAdviceSTUDY/백엔드 2021. 2. 3. 16:04
@ControllerAdvice - Spring에서 제공하는 어노테이션으로 모든 컨트롤러에서 선택한 패키지 또는 특정 어노테이션까지 다양한 컨트롤러에서 적용할 수 있는 전역 코드를 작성할 수 있다. @ExceptionHandler와 함께 사용할 수 있는 예외 처리에 중점을 두고 사용된다. - JSON으로 처리 결과를 반환하고 싶을 때는 @RestControllerAdvice(@ControllerAdvice + @ResponseBody)를 사용하면 된다. - AOP(Aspect Oriented Programming) 방식이다. - @Controller, @RestController에서 발생한 예외를 @ControllerAdvice 또는 @RestControllerAdvice에서 잡아 처리할 수 있다. 만약..
-
BeanSTUDY/백엔드 2021. 1. 5. 18:43
Bean이란? - 스프링 IoC 컨테이너에 의해서 인스턴스화되어 조립되거나 관리되는 객체를 말한다. - 스프링부트의 경우 @Component, @Service, @Controller, @Repository, @Bean, @Configuration 등으로 필요한 빈들을 등록하고 필요한 곳에서 의존관계 주입을 통해 사용하는 것이 일반적이다. - Bean 등록 1. xml 설정 파일에 등록 2. Annotation을 이용한 등록(class를 bean으로 등록) // @Component // @Service // @Controller @Repository public interface HelloWorldMapper { HelloWorld selectHelloWorld(); } ※ Controller, Servi..
-
MybatisSTUDY/백엔드 2020. 12. 31. 10:01
Mybatis란? - 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 Persistence Framework이다. Mybatis는 JDBC로 처리하는 상당부분의 코드와 파라미터 설정 및 결과 매핑을 대신해준다. Mybatis는 데이터베이스 레코드에 원시타입과 Map 인터페이스 그리고 자바 POJO 를 설정해서 매핑하기 위해 XML과 애노테이션을 사용할 수 있다. ※ Persistence Framework : 데이터의 저장, 조회, 변경, 삭제를 다루는 클래스 및 설정 파일들의 집합이다. JDBC 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업만으로 데이터베이스와 연동되는 시스템을 빠르게 개발할 수 있으며 안정적인 구동도 보장한다. - 특징 쉬운 접근성과 코드의 간결함. XML ..
-
Server LogSTUDY/백엔드 2020. 12. 28. 15:53
Logging이란? - 프로그램 개발 중이나 완료 후에 발생할 수 있는 오류에 대해 디버깅하거나 운영 중인 프로그램 상태를 모니터링하기 위해 필요한 정보(로그)를 기록하는 것이다. 서비스 동작 상태 파악 장애 파악 & 알람 - 종류 java.util.logging JDK 1.4부터 포함된 표준 로깅 API 별도 라이브러리 추가 불필요 기능이 많이 부족해 다른 로그 라이브러리를 많이 사용 Apache Commons logging 아파치 재단의 Commons 라이브러리 중에 로그 출력을 제공하는 라이브러리 Log4j/Log4j2 아파치 제단에서 제공하는 자바 기반 로깅 라이브러리 Logback Log4j를 개발한 Ceki Gulcu가 Log4j의 단점 개선 및 기능을 추가하여 개발한 로깅 라이브러리 Log4..