일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- effective
- redis
- socket
- r
- NoSQL
- Elk
- AWS
- html
- mongodb
- ajax
- VCS
- git
- Lombok
- Heap
- javascript
- spring
- Java
- Static
- 데이터통신
- Linux
- cache
- nodejs
- libuv
- 네트워크
- reactor
- mybatis
- HTTP
- github
- reactive
- network
- Today
- Total
목록Spring (22)
빨간색코딩
참조문서 https://docs.spring.io/spring-data/jpa/docs/2.5.2/reference/html/#reference https://arahansa.github.io/docs_spring/jpa.html 1. 개요 Repository 추상화를 통해 interface 선언만으로도 JPA 사용 가능 만약, Spring Data JPA 를 사용하지 않는다면, javax.persistence 패키지의 EntityManager 를 사용하거나 JPQL을 이용해서 쿼리를 날렸어야 했음. JpaRepository 상속 메소드 이름으로 쿼리 생성 지원 이외에도 다양한 지원(페이징, 정렬, 도메인 클래스 변환) 2. JpaRepository 살펴보기 JpaRepository는 CrudReposi..
참조문서 https://docs.spring.io/spring-batch/docs/current/reference/html/index.html https://github.com/spring-projects/spring-batch https://terasoluna-batch.github.io/guideline/5.0.0.RELEASE/en/Ch02_SpringBatchArchitecture.html 스프링 배치 완벽 가이드(마이클 미넬라, 에이콘) 초심자의 눈으로 이해한 내용을 정리해보았다. 책에 있는 내용을 기반으로 썼지만, 책에 없는 내용도 조금씩 적어보았다. 책은 꼭 사서 보시길 바랍니다.. 1. job과 step job은 단순하게 말하면 state machine 이다. 현재 상태를 나타내줌 청크 처..
참조문서 https://docs.spring.io/spring-batch/docs/current/reference/html/index.html https://github.com/spring-projects/spring-batch 스프링 배치 완벽 가이드(마이클 미넬라, 에이콘) 초심자의 눈으로 이해한 내용을 정리해보았다. 책에 있는 내용을 기반으로 썼지만, 책에 없는 내용도 조금씩 적어보았다. 책은 꼭 사서 보시길 바랍니다.. 1. 배치 처리는 언제? 배치 처리는 상호 작용이나 중단없이 유한한 양의 데이터를 일괄로 처리하는 것 실시간 처리가 불필요하거나 최선이 아니고, 주기적으로 반복해야할 때 월별 거래명세서 자원의 효율적 사용 데이터과학분야 2. 배치 역사 과거에는 메인프레임 서버에서 코볼로 개별 배치..
본격적인 리액티브 프레임워크를 사용하기 전에, 옵저버 패턴 - 발행구독 패턴으로 만들어진 Spring Event와 SSE를 통해 리액티브 어플리케이션을 만들어보자 cf) 옵저버 패턴 포스팅 : https://sjh836.tistory.com/180 1. Spring 에서 Event 를 다룬다? 스프링 프레임워크에서는 EventListener를 통해 발행-구독(Pub/Sub) 패턴, 이벤트 버스(EventBus) 등을 지원한다. ApplicationContext 레벨에서 지원 도메인 서비스간 강한 결합, 강한 의존성을 Event 기반으로 풀어내면, 느슨한 결합 등을 얻을 수 있다. 개인적으론, 이것은 상황에 따라 장점이 될수도 있고, 단점이 될 수도 있다고 본다. 핵심 비즈니스 이외, 부가적인 비즈니스 로..
Spring 프레임워크도 5.x 부터는 리액티브를 지원하기 시작했지만, 이 글에서는 그 전까지의 상황을 살펴보았다. 리액티브가 왜 필요하고, 스프링5가 나오기전까진 반응성을 어떻게 구현하였는지를 살펴본다. 1. 리액티브(반응형)이 왜 필요한가? 1-1. C10K 문제 http://www.kegel.com/c10k.html 다수의 클라이언트를 동시에 처리할 수 있는가? 서버에서 10K(1만)개의 클라이언트에 대한 연결, 응답, 부하에 관련된 이야기 스레드는 서버의 cpu core 수에 종속적, 멀티스레드로 10k 요청에 대해 처리할 수 있는 한계가 있다. 요청 스레드들이 io wait 에 전부 빠져있다면? 대안) event-driven 방식 이벤트(=요청)와 io처리(I/O 멀티플렉싱)를 분리 이벤트루프는..
1. speing webflux 란? 더 낮은 사양의 하드웨어, 더 적은 수의 스레드로 동시성을 처리하기 위함 서블릿 스펙 3.1에서 논블로킹IO API를 지원하긴 하는데, 자꾸 동기(Filter, Servlet)나 블로킹(getParameter, getPart)에서 걸린다 spring 5.0 (boot 2.0) 부터 사용 가능 1-1. 특징 서블릿과 이별 : DispatcherServlet(doGet, doPost) 이 없음 기본 컨테이너가 tomcat -> netty (서블릿 스펙 3.1이상인 tomcat을 쓸 수는 있음) project reactor : 절차형 -> 반응형, 코드가 의식의 흐름처럼 흘러감 Reactive stream의 구현체 비동기 / 논블로킹 스트림 처리를 위한 스펙명세 https..
참조문서https://docs.spring.io/spring/docs/4.3.18.RELEASE/spring-framework-reference/html/websocket.htmlhttps://d2.naver.com/helloworld/1336먼저 웹소켓 이전부터 천천히 알아보자1. 클라이언트는 어떻게 이벤트를 받아왔나?전통적으로 웹 클라이언트(브라우저)와 웹 서버는 http request - response 방식으로 동작한다. 그런데 서버에서 일방적으로 클라이언트에게 (요청을 안했는데도) 응답을 내려줘야하는 경우도 있을 수 있다. 바로 채팅이나 알림같은 경우이다. 메세지가 왔거나, 친구신청이 왔다거나 하는 경우들이다. 이런 경우들에 기존의 req - res 방식은 자연스럽지 못했는데, 애초에 단방향 통..
참조문서https://docs.spring.io/spring-security/site/docs/4.2.7.RELEASE/reference/htmlsingle/#getting-startedhttp://springsource.tistory.com/80https://okky.kr/article/3827381. 스프링 시큐리티란?스프링 시큐리티는 스프링 기반의 어플리케이션의 보안(인증과 권한)을 담당하는 프레임워크이다. 만약 스프링시큐리티를 사용하지 않았다면, 자체적으로 세션을 체크하고 redirect 등을 해야할 것이다. 스프링 시큐리티는 보안과 관련해서 체계적으로 많은 옵션들로 이를 지원해준다. spring security는 filter 기반으로 동작하기 때문에 spring MVC 와 분리되어 관리 및 동작..
1. 다양한 intercept 방법들과 주 사용처Servlet Filter : 인코딩, 인증, 압축, 변환 등HandlerInterceptor : 세션, 쿠키, 검증 등AOP : 비즈니스단 로깅, 트랜잭션, 에러처리 등2. Servlet Filter 와 HandlerInterceptor 차이Servlet Filter : Dispatcher Servlet의 앞단에서 들어오는 요청을 처리J2EE 스펙spring과 무관HandlerInterceptor : Dispatcher Servlet의 뒤의 Handler 영역에서 요청을 처리org.springframework.web.servlet.handler 패키지가 제공흐름 정리 : Request -> Servlet Filter -> Dispatcher Servlet..
참조문서 : https://logging.apache.org/log4j/2.x/1. log4j 란?log for java 의 약자로서 로깅을 위한 라이브러리이다. 로깅 라이브러리를 별도로 사용하지 않는다면, system.out.println()으로 할 것이다. 개발환경이야 상관없겠지만, 운영환경에서는 리소스낭비이다. 그렇다고 안쓰자니 에러상황에서 로깅이 아쉽다. 이럴 때 log4j 를 사용하면 해결할 수 있다.특징system.out.println() 에 비해 속도가 훨씬 좋다.멀티스레드 환경에서 사용해도 안전하다.계층적인 로그 설정과 처리가 가능하다ㅏ.출력을 콘솔, 파일, 원격, email, DB 등 다양하게 가능하다.2. slf4jSimple Logging Facade For Java 의 약자로서 lo..
1. AOP란?Aspect Oriented Programming 의 약자로 관점지향 프로그래밍이라고 부른다. IoC가 낮은 결합도와 관련된 것이라면 AOP 는 높은 응집도와 관련되어 있다.서비스들의 비즈니스 메소드들은 복잡한 코드로 구성되어있는데, 그 중 핵심 로직은 얼마안되고 대부분은 트랜잭션, 로깅 처리, 인증과 관련된 코드들이 있을 수 있다. 이럴 때 비핵심이지만 꼭 필요하고, 공통화할 수 있는 부분을 따로 빼서(횡단 분리) 관리하는 것이다.2. AOP 용어조인포인트(Joinpoint) : 클라이언트가 호출하는 모든 비즈니스 메소드, 조인포인트 중에서 포인트컷되기 때문에 포인트컷의 후보로 생각할 수 있다.포인트컷(Pointcut) : 특정 조건에 의해 필터링된 조인포인트, 수많은 조인포인트 중에 특..
컨트롤러에서 request 들을 다양한 타입으로 받을 수 있다.1. Servlet APIServletRequest, ServletResponseHttpServletRequest, HttpServletResponse : 위에꺼를 상속받음HttpServletRequest.getInputStream() : InputStream, Reader 등을 얻을 수 있다.HttpServletResponse.getOutputStream() : OutputStream, Writer 등을 얻을 수 있다.HttpSession : HttpServletRequest 에서 세션관련한 것들만 있음2. Spring APIWebRequest : HttpServletRequest 와 비슷하지만 Servlet 과 의존성이 없다org.spri..
참조문서 : https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html1. RestTemplate이란?spring 3.0 부터 지원한다. 스프링에서 제공하는 http 통신에 유용하게 쓸 수 있는 템플릿이며, HTTP 서버와의 통신을 단순화하고 RESTful 원칙을 지킨다. jdbcTemplate 처럼 RestTemplate 도 기계적이고 반복적인 코드들을 깔끔하게 정리해준다. 요청보내고 요청받는데 몇줄 안될 정도..특징기계적이고 반복적인 코드를 최대한 줄여줌RESTful형식에 맞춤json, xml 를 쉽게 응답받음2. HTTP 서버와의 다양한 통신방법2-1. U..
참조문서 : https://projectlombok.org/1. lombok 을 왜 쓰는가?모델 Class (VO, DTO, Entity) 를 만들때, 제일 귀찮은 것이 생성자, 접근자, 설정자, toString() 등이라고 한다. 나는 별로 안 귀찮지만...ㅋㅋㅋ 그래도 lombok을 사용하면 @Getter, @Setter 같은 어노테이션만 붙이면 자동으로 해준다하니 알아보고 좋다면 써보자기존 방식의 문제점멤버변수를 제어하기위해 모델객체마다 반복적으로 메소드들을 생성해야 한다.IDE에서 generate 를 이용해서 편하게 생성할 수 있지만, 변수명이 바뀌면 다시 만들어야한다.lombok의 특징생성자, 접근자, 설정자, toString() 자동생성 라이브러리이므로 위와 같은 번거로움이 없다.이외에도 다양..
1. JSTL 이란?JSTL은 JSP 표준라이브러리(JSP Standard Tag Library)의 약어이다. 자주 사용될 수 있는 커스텀 태그들을 모아서 표준으로 모아놓은 태그 라이브러리다.JSTL 의 종류라이브러리명접두어주요 기능URI코어c변수 지원, 제어문, 페이지 관련 처리http://java.sun.com/jsp/jstl/core함수fncollection 처리, String 처리http://java.sun.com/jsp/jstl/fuctions포매팅fmt포맷 처리, 국제화 지원http://java.sun.com/jsp/jstl/fmt데이터베이스sqlDB관련 CRUD 처리http://java.sun.com/jsp/jstl/sqlXMLxXML관련 처리http://java.sun.com/jsp/jst..