Web/spring
일반적으로 Pageable에 sort 포함 defualt 값을 줄 때는 @PageableDefault()를 사용한다. @PageableDefault(direction = Sort.Direction.DESC, sort = "name") Pageable pageable, 하지만 @PageableDefault()는 한 가지의 sort조건만 줄 수 있다. Pageable 다중 sort 1. pageable에 여러 sort 조건을 주고 싶을 때는 @SortDefault.SortDefaults를 사용하면 된다. @SortDefault.SortDefaults( { @SortDefault(sort = "name", direction = Sort.Direction.ASC) , @SortDefault(sort = "age..
1. Report https://www.notion.so/springboot-46aac7a13b3241eda52a6f873846febe Spring의 핵심 3가지 IoC, AOP, PSA Ioc(Inversion of Control) - 제어역전 [일반적인 의존성에 대한 제어권] class OwnerController { private OwnerRepository repository = new OwnerRepository(); } 쓸 생성자를 class안에서 직접 만들어서 사용 의존성을 자기 자신이 관리 [IoC 제어역전에 의한 의존성 주입] class OwnerController { private OwnerRepository repo; public OwnerController(OwnerRepositor..
RetryTemplate을 이용하려고 하는데 Class not found 오류가 떴다. pom.xml에 retryTemplate dependency를 추가 안해줘서 생긴 오류였다 pom.xml에 dependency를 추가 헀더니 오류가 없어졌다. dependency를 추가 했는데 오류가 뜬다? 제대로 설치가 안된다? 찾을수 없다면?? 1. 프로젝트 우클릭 2. Spring Tool -> Remove Spring Project Nature 3. Spring Tool -> Add Spring Project Nature
RabbitMQ란? ISO 표준인 AMQP(Advanced Message Queing Protocol)을 구현한 메시지 브로커이다. AMQP라는 표준 MQ 프로토콜로 만들어져 있다. 비동기처리를 위한 메시지큐 브로커 이다. Cluster구성이 쉽고 ManageUI가 제공되며 무엇보다 성능이 뛰어나다고 알려져 현재 많이 사용되고 있다. 또한 ManagementUI, Autocluster, MQTT Convert, STOMP 등의 plugin도 제공되어 확장성이 뛰어나며 Spring에서도 AMQP연동 라이브러리가 제공되어 편리하게 연동하여 사용가능하다. Docker 위에 RabbitMQ 설치하기 1. Docker에 RabbitMQ 설치 Ubuntu 실행 후 docker pull rabbitmq:managem..
웹소켓 세션 Channel(room)을 이용해서 개인간 통신이 아닌 channel에 등록되어 있는 멤버들끼리의 통신을 해보기로 한다. 필자는 일단 handler에서 모든걸 구현했다 다시 클래스를 나눠서 구현해보자!! 1.Java단 package ercg.common.websocket; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web...
1. 웹소켓 이란? → 사용자의 브라우저와 서버 사이의 인터렉티브 통신 세션을 설정할 수 있게 하는 기술 Socket over HTTP (ws://... wss:///...) http상에 있다 ws란?웹소켓프로콜 Full duplex, 2-way communication Polling, Long Pollling Auto-reconnect with intelligence 기본적으로 1:1 통신, 1: 전체 통신이 있다 room, channel을 이용하여 그룹통신 가능 [종류] WebSocket Socket Over HTTP IE10+ (Can use pure WebSocket javascript library) SockJS Like socket.io(NodeJS) Polyfill (socket.io는 원래..
기존 소스에 sqlMap.xml 파일을 추가 했는데 sqlMapException: There is no statement named cacOim090DevDAO.selectMsftInfo in this SqlMap. 라는 오류가 떴다. 처음엔 DAO랑 sql에서 받는 주소가 안맞나? 이름이 안맞나? 타입이 안맞나? 생각하고 확인해봤지만 전부 똑같아서 뭔가 했다.. 이럴땐 sql-map-config.xml 파일을 들어가서 내가 새로 추가한 sqlMap.xml 파일을 추가했는지 확인해본다.
1. web.xml 에서 DispatcherServlet 선언이 제대로 되어있는지 확인 appServlet /* url-pattern 항목에 / 로 되어있는지 확인 → /* 변경 2. servlet-context.xml 에 설정 확인 component:scan 확인 3. url mapping이 잘 되어있는지 컨트롤러에서 확인 4. servlet-context.xml에 선언 확인 5. 오타 확인 @RequestMapping( value , method ) 오타가 있는지 없는지 확인하기 6. 서버 클린, 프로젝트 클린 후 서버 재시작 필자경우 6번으로 해결..
클라이언트의 IP 주소는 HttpServletRequest에 있는 getRemoteAddr() 메서드를 이용하여 알아낼 수 있다. Ip주소가 프록시나 로드밸런서를 통해 호출되는 경우 로드밸런서의 IP가 나온다 이 경우를 방지하기 위해 X-Forwarded-For 값을 확인하고 없을 경우 getRemoteAddr()을 사용한다. import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @Controller public class HomeController { @RequestMapping(value = "/", m..