반응형

개발 330

[Spring] Slack Slash Command - 5

이번 글에서는 코드로 살펴보도록 하겠습니다. ■ data payload data payload 를 사용해야 하기 때문에 저는 객체에 매핑이 되도록 해주었습니다. 여기서 놓치지 말아야 할 부분은 slack 에서는 data payload 을 보낼 땐 Content-type header 를 application/x-www-form-urlencoded 로 설정해서 보냅니다. 그렇기 때문에 위 사진처럼 @RequestBody 를 사용하지 않습니다. 자세한 사항은 아래 링크를 참고해주시면 감사하겠습니다. 이렇게 개발을 함으로 써 따로 converter 를 만들지 않아도 쉽고 빠르게 개발을 할 수 있게 됩니다. 그리고 저는 Lombok 을 주로 사용해서 개발을 하는데 이 때 매핑할 클래스에 각 필드에 대한 sette..

개발/Spring 2019.10.07

[Spring] Slack Slash Command - 4

이번 장에서는 슬랙에서 웹 서버로 요청 시에 어떠한 data payload 를 보내는지와 사용자가 Slash Command 에 입력한 text 를 웹 서버에서 얻어보는 코드를 소개하려고 합니다. https://api.slack.com/slash-commands 를 보면 Slash Command 를 호출하면 슬랙에서 data payload 와 어떤 유저가 요청을 했는지에 대한 정보를 제공한다고 나와 있습니다. Slash Commands Learn how to build bot users, send notifications, and interact with workspaces using our APIs. api.slack.com 그리고 어떤 data payload 를 전달하는지에 대한 예도 나와 있습니다. ..

개발/Spring 2019.10.06

[Spring] Slack Slash Command - 3

먼저, Slack workspace 가 생성돼 있다고 가정을 하고 진행을 하도록 하겠습니다. 만약 workspace 가 생성 돼 있지 않으시다면 해당 링크 https://slack.com/intl/en-kr/ 에서 생성을 진행해주세요. Where work happens Slack is where work flows. It's where the people you need, the information you share, and the tools you use come together to get things done. slack.com 이제 Slack 에서 제공하는 Slash Command 앱을 생성하려고 합니다. 다음의 링크에서 생성을 할 수 있습니다. https://api.slack.com/apps ..

개발/Spring 2019.10.06

[Spring] Slack Slash Command - 2

이번 장에서는 사용자가 Slack Slash Command 입력 시 슬랙에서 보내는 요청을 받을 수 있는 웹 서버를 간단하게 만들도록 하겠습니다. Gradle 기반의 Spring Boot 2.1.8 의존성 : org.springframework.boot:spring-boot-starter-web org.projectlombok:lombok 저는 Spring Boot 를 사용하여 개발을 하려고 합니다. 프로젝트를 생성하였다면 다음과 같이 임시로 Controller method 를 추가해줍니다. Http method 로 POST 를 사용한 이유는 slack 에서 POST 로 요청을 하기 때문입니다. 우선 아직까지는 Slash Command 에 대한 테스트를 하기 위해서 추가한 코드들이기 때문에 깃플로우를 이..

개발/Spring 2019.10.06

[Spring] Slack Slash Command - 1

Spring boot 를 이용하여 Slack Slash Commmand 예제를 작성해보려고 합니다. github 나 google 에 검색했을 때 Slack 에서 제공하는 Slash Command 를 간단히 사용하는 프로젝트나 코드는 존재하나, 슬랙의 요청을 검증하는? 그런 보안 관련한 코드는 자세히 없는 것 같아 해당 부분을 예제로 만들어 보려고 합니다. 먼저, Slack 에서 제공하는 Slash Command 는 다음과 같이 사용할 수 있습니다. 이 때, 입력한 Slash Command 로 인해 데이터가 Slack -> App 으로 전송되어 App 에서 원하는 동작을 할 수 있습니다. 회사에서 긴급한 상황 때 Slack 에서 Slash Command 를 이용하여 손쉽게 배포할 수 있도록 하는 서비스를 ..

개발/Spring 2019.10.01

[Java] Soft reference object

Soft reference 에 관련해서 그마나 이해가 가도록 설명이 돼 있는 것 같다. 해당 링크에서 이야기하는 Soft reference 는 가비지 컬럭터가 사용하지 않는 객체들을 청소할 때 Soft reference object 도 같이 청소할지 말지 결정한다. 만약 메모리가 부족하다면 청소를 할 것이고, 그렇지 않다면 청소하지 않는다고 한다. 그렇기 때문에 이미지 캐시 같은 곳에 사용할 때 좋은 방법이라고 한다. 메모리에 들고 있지만 메모리가 부족해질 경우 GC 에서 제거하기 때문이다. Soft reference 이야기가 나오면 Weak reference 이야기도 나오는데 Weak reference 는 GC 가 돌 때마다 청소가 된다고 한다. 우선 자세히 알아보지는 않고 이런게 있다~ 정도만 알아도..

개발/Java 2019.04.04

[Spring] Spring security + jwt, 토큰 요청 시 "잘못된 자격증명" 뜰 시

잘못된 자격증명 이 뜨는 경우가 많으나 그 중 한 가지 경우에 대해 이야기를 해보려고 한다. 사진과 같이 토큰을 요청했다. 현재 DB에는 다음과 같은 정보가 들어있다. username : robin.kwon@opensurvey.co.kr password : (passwordEncoder.encode("pasword") 를 한 값) 이 때 사진과 같이 정상적으로 요청을 했을 때도 잘못된 자격증명 이라는 오류를 뱉는다. 생각을 해보니 DB 에 있는 `robin.kwon@opensurvey.co.kr` 이란 데이터의 encoding 된 password 값이 일치하지 않아 발생하는 것 같다고 생각했다. 즉, 토큰 요청 시 다음과 같이 동작되야 토큰 요청이 정상적으로 수행이 될 것이다. passwordEncord..

개발/Spring 2019.01.30

[Spring] eureka discovery 서버에 eureka client 등록이 되지 않을 때

eureka disconvery servcer 에 eureka client 가 등록이 되지 않을 때 방법이다. eureka client 의 application.yml 은 다음과 같다. 참고로 꼭 spring.application.name 은 등록해줘야 한다. spring: application: name: oauth-api eureka: client: serviceUrl: defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761/eureka} instance: preferIpAddress: true eureka client 서버의 Main 클래스에 @EnableEurekaClient 달아줬는지 확인. 이렇게 @EnableEurekaClient 어노테이션을 달아..

개발/Spring 2019.01.17

Spring multi datasource transactionManagaer 설정

아직 해결을 못해서 못 씀 키워드: Chained TransactionManager Jta TransactionManager 해결은 했음.hikari 사용해 datasource 2개 연결했더니 트랜잭션 롤백이 되지 않고 entityManager 를 통해 persist() 메소드 호출하면 바로 db 에 insert 되는 현상이 발생함.내가 datasource 설정을 잘못해서 그런 줄 알았는데 알고보니 테이블 엔진이 MyISAM 이었음. MyISAM 은 트랜잭션을 지원하지 않음. ----

개발/Spring 2019.01.14
반응형