일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- r
- HTTP
- mongodb
- effective
- Lombok
- reactive
- javascript
- spring
- socket
- html
- VCS
- 네트워크
- ajax
- NoSQL
- git
- nodejs
- Heap
- AWS
- Static
- reactor
- Elk
- 데이터통신
- Java
- redis
- cache
- github
- libuv
- Linux
- network
- mybatis
- Today
- Total
목록spring (17)
빨간색코딩
참조문서 https://martinfowler.com/tags/domain%20driven%20design.html Domain Driven Design Quickly (도메인 주도 설계란 무엇인가? 쉽고 간략하게 이해하는 DDD, 플로이드 마리네스쿠 지음, 최수경 옮김)을 읽고 이해한 내용을 정리해보았다. Evans Eric 의 Domain-Driven Design: Tackling Complexity in the Heart of Software 는 2003년 8월 22일 초판인데, 이걸 기반으로 2011년에 쓴 책이라고 한다. 책에 있는 내용을 기반으로 썼지만, 좀 더 쉬운 이해를 위하여 예제를 덧붙이거나, 주관적 해석, 책에 없는 내용(반 버논의 주석, Spring 프레임워크에서 DDD 이야기 등)..
참조문서 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 멀티플렉싱)를 분리 이벤트루프는..
참조문서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..
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://www.javatpoint.com/spring-mvc-tiles-examplehttps://tiles.apache.org1. tiles 란?타일즈는 웹 페이지의 상단이나 하단 메뉴와 같이 반복적으로 사용되는 부분들에 대한 코드를 분리해서 예쁘게 한 곳에서 관리를 가능하게 해주는 프레임워크이다.JSP include와의 차이비슷한 역할이지만, tiles가 여러모로 편리하고 좋다. jsp는 페이지 내에 동일한 레이아웃 정보가 들어가므로 전체적인 레이아웃을 변경하게 될 경우 모든 페이지를 수정해야하는 문제점이 있다. 예를들면 만약 50개의 페이지에 상단 메뉴가 include 되어있는데, 페이지명이 바뀌면 50개 파일을 전부 수정해주어야 하는 것이다. tiles는 이런 일이 있으면 설정파일만..
참조문서 : https://freemarker.apache.org/docs/index.html1. freemarker란?템플릿 엔진이다. 자바 객체에서 데이터를 생성해서 템플릿에 넣어주면 freemarker에서 템플릿에 맞게 변환하여 HTML 파일을 생성한다. 다른언어도 쓸 수 있지만, JVM 위에서 돌아가므로 주로 자바 서블릿에서 많이 쓴다. freemarker는 HTML 출력만을 위한 엔진은 아니고 텍스트라면 그 어떠한 것도 가능하다. 어떠한 포맷이라도 텍스트에서 텍스트로 변환해서 출력하기 때문이다.freemarker는 웹기반 프레임워크가 아니고 완전한 POJO기반 템플릿 엔진이다. .java + .ftl = .html 이다. 비슷한 템플릿 엔진으로는 velocity 가 있다.장점 : JSP의 가장 ..
스프링과 연동하려면 마이바티스에서 제공해주는 API를 사용해야 한다. 다음과 같은 클래스를 쓴다.org.mybatis.spring.SqlSessionFactoryBeanorg.mybatis.spring.SqlSessionTemplate1. 연동 기본설정applicationContext-dao-config.xml 에 bean 을 추가한다. 2. 연동방법1 : SqlSessionDaoSupport 상속DAO클래스에 SqlSessionDaoSupport 를 상속받아서 사용한다.// BoardDAO.java @Autowired public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) { super.setSqlSessionFactory(sqlSe..
참조문서http://www.ehcache.org/documentation/https://blog.outsider.ne.kr/1094https://www.mkyong.com/spring/spring-caching-and-ehcache-example/ 캐시 엔진 중에 유명한 것들은 memcached, redis 등이 있다. ehcache는 간단한게 쓸 수 있는 캐시라이브러리이며, spring에서 어노테이션으로도 쉽게 쓸 수 있다. 캐시를 적용하기 최적인 경우는 20%의 데이터가 전체 조회 건수의 80%를 차지할 경우(80:20 법칙?) 캐시를 사용함으로써 성능을 대폭 향상 가능하다.1. EHCache란?캐시 엔진 중의 하나이다. 주요 특징으로는 아래와 같다.경량의 빠른 캐시 엔진확장성 : 메모리, 디스크 저..