해당 라이브러리는 Signature 서비스에서 사용되는 공통 모듈을 모은 라이브러리입니다.
build.gradle
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.SamsungSignature:signature-common:0.0.6'
}공통으로 사용하는 에러 처리용 RestControllerAdvice입니다.
SignatureConfig.java
@Configuration
public class SignatureConfig {
@Bean
public SignatureAdvice signatureAdvice() {
return new SignatureAdvice();
}
}반복되는 ResponseEntity<MessageBody<Void>> 와 같은 클래스를 생성해주는 유틸입니다.
예시는 아래와 같습니다.
ResponseEntityFactory.java
@GetMapping("/v1/signature/response-example")
public ResponseEntity<MessageBody<String>> signatureResponseExample() {
return ResponseEntityFactory.ok("Hello", "Signature GetMethod!");
}
@PostMapping("/v1/signature/response-example")
public ResponseEntity<MessageBody<String>> signatureResponseExample() {
return ResponseEntityFactory.ok("Hello", "Signature PostMethod!");
}{
"message": "Hello",
"data": "Signature GetMethod!"
}이 외에도 헤더를 추가하여 전송할 수 있는 ResponseEntityFactoryWithHeaders와 예외 처리를 담당하는 ResponseEntityExceptionFactory가 있습니다.
redis에 data를 저장하고 불러오는 유틸입니다.
application.yml
spring:
redis:
host: {redis.host}
port: {redis.port}
RedisConfig.java
public class RedisConfig {
private final RedisProperties redisProperties;
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper;
}
@Bean
public RedisConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory(redisProperties.getHost(), redisProperties.getPort());
}
@Bean
public RedisTemplate<byte[], byte[]> redisTemplate() {
RedisTemplate<byte[], byte[]> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory());
return redisTemplate;
}
}RedisUtils.java
@RequiredArgsConstructor
public class redisService{
private final RedisTemplate<byte[], byte[]> redisTemplate;
private final ObjectMapper objectMapper;
private static final int data = 1;
private static String signatureKey = "Hello, Signature!";
public String insert(){
return RedisUtils.put(
redisTemplate,
objectMapper,
data,
"key-",signatureKey);
}
public String insertInExpiredTime(){
return RedisUtils.putWithExpiredTime(
redisTemplate,
objectMapper,
1000,
data,
"key-",signatureKey);
}
public int select(){
return RedisUtils.get(
redisTemplate,
objectMapper,
Integer.class,
"key",signatureKey);
}
}서버간의 Api 비동기 통신을 할 수 있는 유틸입니다.
ApiConfig.java
public class ApiConfig{
@Bean
public WebClient webClient(){
return WebClient.builder()
.baseUrl("http://localhost:8080")
.build();
}
}ApiUtils.java
@RequiredArgsConstructor
public class ApiService {
private final WebClient webClient;
public void getMethod() {
Mono<MessageBody> response = ApiUtils.get(
webClient,
"/v1/signature/response-example",
MessageBody.class);
}
public void postMethod() {
Mono<MessageBody> response = ApiUtils.post(
webClient,
"/v1/signature/response-example",
MessageBody.class);
}
}해당 프로젝트에서 사용하는 라이브러리의 모음입니다.
2.15.3을 사용하는 이유는 현재(2024.03.13) Spring Boot에서 사용하는 버전이 2.15.3이기 때문입니다.