Java&Web 30

[Java] Stream과 사용시 주의할 점

Stream이란 Stream(스트림)은 자바 8버전부터 추가된 컬렉션(배열 포함)의 저장 요소를 하나씩 참조해서 람다식(함수적 스타일)으로 처리할 수 있도록 도와주는 반복자이다. 자바 7버전까지는 컬렉션에서 요소를 순차적으로 처리하기 위해 Iterator반복자를 사용하였다. 자바 8버전부터는 Straeam이 등장하였다. Stream은 Iterator와 비슷한 역할을 하는 반복자이지만, 람다식으로 요소 처리 코드를 제공하는 점과 내부 반복자를 사용하기에 병렬 처리가 쉽다는 점 그리고 중간 처리 + 최종 처리의 파이프라인 작업을 수행한다는 차이가 있다. Stream의 특징 람다식으로 요소 처리 코드 제공 Stream이 제공하는 대부분의 요소 처리 메서드는 함수적 인터페이스 매개 타입을 가지기 때문에 람다식 ..

Java&Web 2022.01.14

[WEB] Web Server와 WAS를 연동하는 이유

[WEB] Web Server와 WAS [WEB] Web Server와 WAS Web Server란? 개념 하드웨어적 의미로는 Web Server가 설치되어 있는 컴퓨터 소프트웨어적 의미로는 클라이언트의 요청을 받아 정적 컨텐츠(image, html, css, javascript 등)를 제공하는 서버 기능 HTTP 프로 minkwon4.tistory.com Web Server인 Apache에 대해 학습하던 중 만일 Web Server가 단순히 정적 데이터를 처리해주는 용도로만 사용된다면 WAS앞에 Web Server가 꼭 필요한지에 대한 의문이 생기게 되었다. 위에 작성된 포스팅에 따르면 Web Server가 다양한 기능을 제공하지만 만일 정적데이터만 처리를 하는 역할을 하는 경우, WAS 또한 정적데이..

Java&Web 2021.08.24

[Apache] Apache의 Rewrite 모듈 (mod_rewrite)

한 서비스의 새로운 버전 개발을 담당한 경험이 있다. 버전이 바뀌면서 서버도 새로 바뀌고, API도 개선이 되었고, 그에 따라 요청 파라미터도 변경이 생기게 되었다. 신서버의 작업이 완료된 후, 다른 기존 서비스들과의 연동작업을 진행하게 되었는데, 이때 일부 서비스와 연동 중 신서버로 구서버의 요청 파라미터를 가진 요청들이 발생하였다. 따라서 신서버의 웹서버에서 파라미터의 값을 이용하여 각 파라미터에 알맞은 서버로의 Rewrite Rule 적용이 필요하였다. Apache 환경에서 Rewrite Rule에 대해 알아보고 실습을 진행해보았다. mod_rewrite란 mod_rewrite는 조건 및 규칙을 기반으로 URL을 전환 및 재작성할 수 있도록 도와주는 Apache 확장 모듈이다. mod_rewrite..

Java&Web 2021.08.20

[JUnit] Maven을 이용하여 특정 JUnit Test 실행시키기

Springboot 환경에서 Spring REST Docs(링크)를 적용시켜본 경험이 있다. Spring REST Docs를 간단히 설명하자면 REST API를 자동으로 문서화해주는 프레임워크이다. 여기까지 본다면 문서화를 도와주는 또 다른 프레임워크인 Swagger와 비슷해보이지만, 가장 큰 차이점은 Spring REST Docs는 프로젝트에 존재하는 테스트 코드(JUnit Test)를 이용하여 자동적으로 문서를 생성해주는 것이다. 따라서 API를 잘 보여줄 수 있는 적절한 테스트 코드와 통과하는 테스트 코드를 작성하는 것이 중요해진다. Spring REST Docs에 대한 더 자세한 내용은 추후의 다룰 예정이다. 본론으로 돌아와 Springboot 프로젝트의 Spring REST Docs를 특정 서버..

Java&Web 2021.07.27

[Spring] Argument Resolver를 이용하여 Client IP 바인딩 하기

이번 포스팅에선 SpringBoot 환경에서 Argument Resolver를 이용하여 요청 파라미터를 바인딩하는 실습을 해보았다. Argument Resolver란? Argument Resolver(아규먼트 리졸버)는 Spring 환경에서 Controller로 들어온 파라미터를 가공하고나, 수정, 바인딩 기능을 제공할때 사용하는 객체이다. HandlerMethodArgumentResolver 인터페이스를 상속하여 Class를 만들어 사용한다. Body(@Request Body)에 담겨 들어오거나 @PathVariable을 이용하는 데이터들은 Controller에서 바로 파라미터로 받을 수 있지만 세션, 쿠키, 헤더 등에서 제공받는 데이터들을 파라미터로 받는 경우 Argument Resolver를 활용하..

Java&Web 2021.07.15

[WEB] RestTemplate의 Connection Pool 설정

2021.01.23 - [Java&Web] - [WEB] RestTemplate을 이용하여 API 호출하기 [WEB] RestTemplate을 이용하여 API 호출하기 RestTemplate이란? RestTemplate은 Spring 3.0 부터 지원하는 템플릿으로 Spring에서 HTTP 통신을 RESTful 형식에 맞게 손쉬운 사용을 제공해주는 템플릿이다. Rest API 서비스를 요청후 응답 받을 수 있도록 설계. minkwon4.tistory.com RestTemplate의 Connection Pool이란 Spring 3.0부터 지원하는 HTTP 통신 템플릿인 RestTemplate은 복잡한 HttpClient 사용을 한번 추상화한 객체로써 단순 메소드 호출만으로 쉽게 HTTP 요청을 주고 받을 ..

Java&Web 2021.04.24

[Apache] Apache와 Springboot 연동하기(mod_proxy)

[Java&Web] - [WEB] Apache와 Tomcat 연동하기 [WEB] Apache와 Tomcat 연동하기 [Network] Web Server와 WAS [Network] Web Server와 WAS Web Server란? 개념 하드웨어적 의미로는 Web Server가 설치되어 있는 컴퓨터 소프트웨어적 의미로는 클라이언트의 요청을 받아 정적 컨텐츠(image, html,.. minkwon4.tistory.com Apache와 Springboot 연동(mod_proxy) Web Server로써 Apache를 Springboot의 내장 Tomcat과 연동하는 작업을 mod_proxy 방식을 사용하여 진행해보았다. mod_proxy 방식은 mod_jk방식에 비해 속도가 느리고, URL에 따른 설정이 ..

Java&Web 2021.04.11

[Java] 람다식과 함수형 인터페이스(2)

[Java] 람다식과 함수형 인터페이스(1) [Java] 람다식과 함수형 인터페이스(1) 람다식(Lambda Experssion)이란? 람다(Lambda)는 JDK 1.8부터 추가된 것으로, 람다의 도입으로 인해 자바는 객체지향언어이지만 함수형언어의 특징까지 가지게 되었다. 즉, 함수형 프로그래밍으로써 람다 minkwon4.tistory.com 람다가 도입된 이유 빅데이터를 프로그램적으로 다룰 수 있는 방법이 필요해지면서 멀티 코어를 활용한 분산 처리, 즉 병렬화 기술이 필요했다. 이에 따라 자바에서는 병렬화를 위해 컬렉션(배열, List, Set, Map)을 강화했고, 이러한 컬렉션을 더 효율적으로 사용하기 위해 스트림을 강화했다. 또 스트림을 효율적으로 사용하기 위해 함수형 프로그래밍, 람다의 도입이..

Java&Web 2021.03.03

[Java] 람다식과 함수형 인터페이스(1)

람다식(Lambda Experssion)이란? 람다(Lambda)는 JDK 1.8부터 추가된 것으로, 람다의 도입으로 인해 자바는 객체지향언어이지만 함수형언어의 특징까지 가지게 되었다. 즉, 함수형 프로그래밍으로써 람다식은 메소드를 간략하면서도 명확한 하나의 식으로써 표현한 것이다. 메소드를 람다식으로 표현하면 메소드의 이름과 반환값이 없어지게되므로 람다식을 익명함수(anonymous function)라고도 한다. 람다식의 작성법 람다식은 익명함수답게 메소드에서 이름과 반환타입을 제거하고 매개변수 선언부와 몸통{ } 사이에 -> 를 추가하여 작성한다. 또한, 람다식에서 매개변수의 타입, 매겨변수의 괄호, 몸통 괄호, return, 세미클론을 경우에 따라 생략을 할 수 도 있다. 기본식 반환타입 메소드이름..

Java&Web 2021.02.27

[Java] JAR, WAR 그리고 EAR

J2EE(Java 2 Enterprise Edition, Java 기술로 기업환경의 어플리케이션을 만드는데 필요한 스펙들을 모아둔 스펙 집합) 애플리케이션에서 모듈은 기능에 따라 JAR, WAR 그리고 EAR로 패키징이 될 수 있다. JAR, WAR, EAR에 대해 알아 보았다. JAR란? JAR란 Java Archive의 줄임말로써 .jar 확장자를 가지는 파일이다. Java 애플리케이션이 동작할 수 있도록 Java 프로젝트를 압축한 파일로써, 내부에는 Class와 같은 Java 리소스와 속성파일 그리고 라이브러리등이 포함되어있다. JAR 파일은 JRE만으로도 실행이 가능하며, Java 플랫폼에 귀속된다는 것을 제외하면 zip 파일과 같은 구조이다. 또한, JAR는 원하는 구조로 구성을 할 수 있는 것..

Java&Web 2021.02.09