300x250
반응형

분류 전체보기 197

[Spring Boot] Java config로 MyBatis 사용하기

스프링프레임워크에 MyBatis + MySQL(MairaDB) 환경을 Java Config로 구성해 봅니다. 앞의 글 "Maven 웹 프로젝트에 스프링프레임워크 적용하기"에 추가하여 구성합니다. "스프링 프레임웍에서 MyBatis, Oracle 사용하기"에서의 xml 설정을 Java Config로 옮겨본 것입니다. 데이터베이스는 Oracle 대신에 MariaDB를 사용했습니다. 전체 소스는 글 하단에 첨부 했습니다. 1. pom.xml 파일에 필요한 의존성을 추가합니다. org.springframework spring-jdbc ${org.springframework-version} javax.servlet jstl 1.2 org.apache.commons commons-dbcp2 2.6.0 mysql m..

Back-End/Spring 2023.02.10

[Spring Cloud] Gateway 를 이용해 API Gateway를 구성하고 실습해보자 (Eureka Server 를 이용해 Load Balancing 하기)

해당 글은 Spring Cloud Netflix Eureka에 의존하는 글입니다. 실습 환경을 따라하시려면 Eureka 글을 확인하시길 바랍니다. 목차 Gateway Pattern Gateway가 도입되면? Spring Cloud Gateway Gateway가 동작하는 방법 Gateway 내부 구조 실습하기 프로젝트 생성하기 의존성 마이크로서비스 연결하기 Eureka Server 에서 각각 인스턴스 정보를 받아 로드밸런싱 하기 Gateway Pattern Microservice 에서 Gateway 패턴은 가장 흔하고 유용하게 쓰는 패턴 중 하나이다. Spring Cloud와 별개로 Gateway 패턴에 대한 자세한 사항은 MSA의 핵심 구성 요소 - API Gateway 패턴 에서 확인할 수 있습니다. ..

Back-End/Spring 2023.02.10

[Spring Cloud] Service Discover Server로 Netflix Eureka 이용하기

Spring Cloud Netflix 스프링 클라우드 넷플릭스는 Spring Boot Application 에 대한 통합 환경 구성을 지원하는 Netflix의 OSS 서비스이다. Netflix는 2007년 심각한 DB손상으로 3일간 서비스 장애를 겼었는데, 이에 운영진들과 기술 리더들은 신뢰성 높고 수평확장이 가능한 Cloud System으로 이전을 해야 함을 느꼈었다고 한다. 그리고 결국 MSA를 7년만에 완벽하게 이전하게 되었는데, 이 때 쌓은 경험치를 바탕으로 MSA 기술을 Spring에게 오픈소스로 풀게 되었다. Netflix OSS 와 Spring Cloud Netflix Netflix OSS 에는 다양한 서비스들이 존재한다. Eureka : Discovery Server 각각의 서비스 인스턴스..

Back-End/Spring 2023.02.10

[KomoranAPI] Komoran, 코모란 형태소 분석기 사용 방법과 사용자 사전 추가 (Java, Python)

코모란 (KOrean MORphological ANalyzer) 은 자바로 구현된 한국어 형태소 분석기입니다. KoNLPy 에도 포함되어 있습니다. 지금은 version 3.x 가 공개되었고, KoNLPy 에는 version 2.x 가 포함되었습니다. 두 버전의 자바 사용방법과 version 3.x 를 Jupyter notebook 의 Python 환경에서 이용하도록 하는 방법을 기록하였습니다. 코모란이 제공하는 사용자사전 추가 기능을 Python 에서도 이용하는 방법도 포함되어 있습니다. Install Komoran (Java) 코모란은 shin285 님이 공개하신 한국어 형태소 분석기 입니다. Java 로 구현되어 있으며, shineware github 에는 version 2.x 가, shin285 ..

Back-End/REST API 2023.02.10

[Spring] JSON 데이터(object, array)를 다뤄보기

이전글 : [Spring] HTTP 통신으로 JSON 데이터 요청 및 응답처리 JSONObject 생성 8 Line에 있는 코드가 외부에서 응답받은 JSON 데이터라 가정해보자. String타입의 JSON포맷데이터이다. 이 값을 JSONObject 생성자 호출시 인자로 전달해주면 JSONObject 객체가 생성되며 get(String key) 메서드로 해당 key에 맞는 value를 꺼내온다. 이때 value엔 어떤타입이 담겨있는지 모르니 해당 값에 맞게 casting을 해주면 된다. JSONObject 안에 JSONObject 생성 JSON에 대해 공부하신지 얼마 안되신분들은 JSONObject안에 또다른 JSONObject가 있을시 헤메시는 분들이 많다. 하지만 JSON이 key와 value로 이뤄진..

Back-End/Spring 2023.02.10

[Spring] HTTP 통신으로 JSON 데이터 요청 및 응답처리

이번장에는 JAVA에서 HTTP 통신으로 외부 API를 호출하여 JSON 데이터를 주고받는법을 알아보자. Spring을 이용한 API 개발을 할때 Jackson 라이브러리가 있어서 JSON 요청데이터 파싱 및 응답을 Spring이 컨버팅 해줘서 편하지만 Spring 환경이 아닌 순수 JAVA에선 어떻게 해야하는지 예제코드와 함께 알아보자. JSON 라이브러리 등록 JSON 데이터를 JAVA에서 다루기위해선 JSON 관련 라이브러리를 등록해야한다. 아래링크에 들어가서 jar파일을 다운받고 Build Path에 추가하자. Spring이라면 maven이나 gradle에 해당 의존성을 추가해주면 된다. https://mvnrepository.com/artifact/org.json/json/20201115 jar..

Back-End/Spring 2023.02.10

[Spring] 복잡한 json 데이터 받기

프론트에서 데이터를 가공하여 서버로 데이터를 보낼 때, 문제를 겪었다. 자바스크립트에서는 데이터를 자유자재로 다루다가, 막상 서버에서 데이터를 다루려 하니 막막해진것... 프론트에서 단순한 { } 객체를 보낼 때는 서버에서 단순히 Map으로 받으면 알아서 파싱을 잘 해주지만 (설정이 되어있다는 전제하에) { a: b, b : [ 1, 2, [3, 4] ] c : { e: 2, f: 5} } 이런 식의 데이터를 받고나서 사용할 때 문제가 된다. 위 상황에서 @RequestBody Map params 이런식으로 파라미터를 받을 수 있지만, 막상 꺼내 쓸려면 캐스팅 하는데 머리를 굴려야 한다. 아래 예제를 보자. javascript 프론트의 데이터는 아래와 같다. // 데이터 형식 var dataMap = {..

Back-End/Spring 2023.02.10

[Spring MVC] 서블릿 - HttpServletResponse

HttpServletResponse 서블릿은 응답에 대해 HttpServletResponse를 통해 다음과 같은 기능을 제공합니다. HTTP 응답 메시지 생성 HTTP 응답코드 지정 헤더 생성 바디 생성 또한 Content-Type, 쿠키, Redirect를 편하게 사용할 수 있게 해주는 기능을 제공해줍니다. 헤더 설정 HttpServletResponse.setHeader() @WebServlet(name = "responseHeaderServlet", urlPatterns = "/response-header") public class ResponseHeaderServlet extends HttpServlet { @Override protected void service(HttpServletRequest..

Back-End/Spring 2023.02.09

[Spring] Spring Jdbc - batchUpdate()를 사용한 bulk Insert 최적화

Spring Data JPA의 saveAll()메서드는 인자 값으로 받은 entity들을 저장하는 메서드이다. 실제로 실행해보면 여러 엔티티들에 대한 insert 쿼리가 각각 한 번 씩 차례대로 나가는 것을 볼 수 있다. 엔티티의 수가 적으면 상관없지만, 10,000건, 100,000건 처럼 많아지면 엔티티 1 : insert 1 방식은 부담이 될 수 있다. 인터넷을 검색해보면 hibernate.jdbc.batch_size: 50 처럼 한 번에 여러 건을 insert하는 벌크 연산이 많이 소개되어 있다. 이 방법을 사용해도 좋지만, 여기서는 Spring JPA가 아닌 JDBC를 사용한 보다 빠르고 강력한 연산인 batchUpdate()를 소개하고자 한다. Bulk Insert bulk insert는 여러..

Back-End/Spring 2023.02.09

[Spring] 서버에서 다른 서버의 Rest API 요청 및 응답 받기

스프링 서버단에서 다른 서버에 request를 보내야 하는 경우 두 가지 방법을 이용 가능. ! 1. RestTemplate을 이용한다. private static void getEmployees() { final String uri = "http://localhost:8080/springrestexample/employees.xml"; RestTemplate restTemplate = new RestTemplate(); String result = restTemplate.getForObject(uri, String.class); System.out.println(result); } 2. WebClient를 이용한다. (스프링 5버전 이상에서 지원하는 방식) @Bean public WebClient lo..

Back-End/Spring 2023.02.09
300x250
반응형