Spring Framework: 317개의 글

참조문서 https://docs.spring.io/spring/docs/4.3.18.RELEASE/spring-framework-reference/html/websocket.html https://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-started http://springsource.tistory.com/80 https://okky.kr/article/382738 1. 스프링 시큐리티란? 스프링 시큐리티는 스프링 기반의 어플리케이션의 보안(인증과 권한)을 담당하는 프레임워크이다. 만약 스프링시큐리티를 사용하지 않았다면, 자체적으로 세션을 체크하고 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 -> Dispatch..

1. AOP란? Aspect Oriented Programming 의 약자로 관점지향 프로그래밍이라고 부른다. IoC가 낮은 결합도와 관련된 것이라면 AOP 는 높은 응집도와 관련되어 있다. 서비스들의 비즈니스 메소드들은 복잡한 코드로 구성되어있는데, 그 중 핵심 로직은 얼마안되고 대부분은 트랜잭션, 로깅 처리, 인증과 관련된 코드들이 있을 수 있다. 이럴 때 비핵심이지만 꼭 필요하고, 공통화할 수 있는 부분을 따로 빼서(횡단 분리) 관리하는 것이다. 2. AOP 용어 조인포인트(Joinpoint) : 클라이언트가 호출하는 모든 비즈니스 메소드, 조인포인트 중에서 포인트컷되기 때문에 포인트컷의 후보로 생각할 수 있다. 포인트컷(Pointcut) : 특정 조건에 의해 필터링된 조인포인트, 수많은 조인포인트..

컨트롤러에서 request 들을 다양한 타입으로 받을 수 있다. 1. Servlet API ServletRequest, ServletResponse HttpServletRequest, HttpServletResponse : 위에꺼를 상속받음 HttpServletRequest.getInputStream() : InputStream, Reader 등을 얻을 수 있다. HttpServletResponse.getOutputStream() : OutputStream, Writer 등을 얻을 수 있다. HttpSession : HttpServletRequest 에서 세션관련한 것들만 있음 2. Spring API WebRequest : HttpServletRequest 와 비슷하지만 Servlet 과 의존성이 없다..

참조문서 : https://projectlombok.org/ 1. lombok 을 왜 쓰는가? 모델 Class (VO, DTO, Entity) 를 만들때, 제일 귀찮은 것이 생성자, 접근자, 설정자, toString() 등이라고 한다. 나는 별로 안 귀찮지만...ㅋㅋㅋ 그래도 lombok을 사용하면 @Getter, @Setter 같은 어노테이션만 붙이면 자동으로 해준다하니 알아보고 좋다면 써보자 기존 방식의 문제점 멤버변수를 제어하기위해 모델객체마다 반복적으로 메소드들을 생성해야 한다. IDE에서 generate 를 이용해서 편하게 생성할 수 있지만, 변수명이 바뀌면 다시 만들어야한다. lombok의 특징 생성자, 접근자, 설정자, toString() 자동생성 라이브러리이므로 위와 같은 번거로움이 없다...

참조문서 http://www.ehcache.org/documentation/ https://blog.outsider.ne.kr/1094 https://www.mkyong.com/spring/spring-caching-and-ehcache-example/ 캐시 엔진 중에 유명한 것들은 memcached, redis 등이 있다. ehcache는 간단한게 쓸 수 있는 캐시라이브러리이며, spring에서 어노테이션으로도 쉽게 쓸 수 있다. 캐시를 적용하기 최적인 경우는 20%의 데이터가 전체 조회 건수의 80%를 차지할 경우(80:20 법칙?) 캐시를 사용함으로써 성능을 대폭 향상 가능하다. 1. EHCache란? 캐시 엔진 중의 하나이다. 주요 특징으로는 아래와 같다. 경량의 빠른 캐시 엔진 확장성 : 메모리..

스프링프레임워크로 카카오봇 만들기 참조문서: https://github.com/plusfriend/auto_reply 0. 들어가며 삼육대 카카오챗봇을 구현할 일이 생겼다. 구글링을 열심히 했지만 노드, 장고, php의 챗봇 개발이야기밖에 없었다.(심지어 스프링 부트도 못찾은ㅋㅋ) 다른 언어를 쓸 수도 있지만, 공부나 할겸 api문서만 보고 만들기로 결심했다.. 역시 삽질을 많이했고, 다른 개발자분들의 삽질시간 단축을 위해 소스를 공유한다. 그리고 ui없이 백엔드만으로 간단하게 개발할 수 있으며 재밌기때문에 많은 분들이 한번 자신의 서비스를 개발해보셨으면 한다. 해당 문서에서는 간단하게만 설명하며, 전체 소스는 github에 있다. GITHUB: https://github.com/sjh836/Spring..

| HtmlUnit이란 HtmlUnit은 프로그래밍적으로 HTML 사이트와 상호작용할 수 있게 하는 자바 오픈소스입니다. 테스트 프레임워크로서 생각할 수 있지만 브라우져와 프로그래밍적으로 상호작용 할 수 있게 하는 확장된 개념으로 받아들이는 것이 좋습니다. 스프링 4 이후로 스프링에 통합되어 MVC 테스트(특히 템플릿 뷰 테스트) 때 유용하게 쓰일 수 있습니다. http://htmlunit.sourceforge.net/ 공식 사이트를 참고하시면 좋습니다. | 샘플 코드 프로젝트 구조 | pom.xml | +---src | +---main | | +---java | | | \---com | | | \---tutorial | | | \---sptringbootmvc | | | SampleController...

| Thymeleaf란? Thymeleaf는 스프링 부트가 자동 설정을 지원하는 웹 템플릿 엔진입니다. HTML문서에 HTML5 문법으로 서버쪽 로직을 수행하고 적용시킬 수 있습니다. HTML 디자인에 전혀 영향을 미치지 않고 웹 템플릿 엔진을 통해 HTML을 생성할 수 있습니다. 독자적으로 HTML을 생성하기 때문에 테스트 시 렌더링 결과를 확인하기 좋습니다. | Thymeleaf 스프링 부트에서 사용하기 프로젝트 구조 +---src | +---main | | +---java | | | \---com | | | \---tutorial | | | \---sptringbootmvc | | | SampleController.java | | | SpringBootMvcApplication.java | | | ..