Browse Source

설정정보 변경

- Date type 일반 모델 포멧팅 변경 (YYYY-MM-DD HH:mm:ss)
- Swagger 설정(token 기입)
feature/auth
지대한 2 years ago
parent
commit
9dcd27c8d8
  1. 68
      src/main/java/com/palnet/biz/config/DateTimeConfig.java
  2. 14
      src/main/java/com/palnet/biz/config/JsonConfig.java
  3. 71
      src/main/java/com/palnet/biz/config/SwaggerConfig.java

68
src/main/java/com/palnet/biz/config/DateTimeConfig.java

@ -0,0 +1,68 @@
package com.palnet.biz.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.format.Formatter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.Locale;
@Configuration
public class DateTimeConfig {
private static final String DATE_FORMAT = "yyyy-MM-dd";
private static final String TIME_FORMAT = "HH:mm:ss";
private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
// @Bean
// public Formatter<LocalDate> localDateFormatter() {
// return new Formatter<LocalDate>() {
// @Override
// public LocalDate parse(String text, Locale locale) {
// return LocalDate.parse(text, DateTimeFormatter.ofPattern("yyyyMMdd", locale));
// }
//
// @Override
// public String print(LocalDate object, Locale locale) {
// return DateTimeFormatter.ISO_DATE.format(object);
// }
// };
// }
//
//
// @Bean
// public Formatter<LocalDateTime> localDateTimeFormatter() {
// return new Formatter<LocalDateTime>() {
// @Override
// public LocalDateTime parse(String text, Locale locale) {
// return LocalDateTime.parse(text, DateTimeFormatter.ofPattern("yyyyMMddHHmmss", locale));
// }
//
// @Override
// public String print(LocalDateTime object, Locale locale) {
// return DateTimeFormatter.ISO_DATE_TIME.format(object);
// }
// };
// }
@Bean
public Formatter<Date> DateFormatter() {
return new Formatter<Date>() {
@Override
public Date parse(String text, Locale locale) throws ParseException {
SimpleDateFormat dt = new SimpleDateFormat(DATE_TIME_FORMAT, locale);
return dt.parse(text);
}
@Override
public String print(Date object, Locale locale) {
return new SimpleDateFormat(DATE_TIME_FORMAT).format(object);
}
};
}
}

14
src/main/java/com/palnet/biz/config/JsonConfig.java

@ -1,6 +1,8 @@
package com.palnet.biz.config;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
@ -11,6 +13,8 @@ import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import java.time.format.DateTimeFormatter;
import java.util.TimeZone;
@ -22,23 +26,31 @@ public class JsonConfig {
private static final String timeFormat = "HH:mm:ss";
private static final String dateTimeFormat = "yyyy-MM-dd HH:mm:ss";
/*
*/
@Bean
@Primary
public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
return builder -> {
// builder.timeZone(TimeZone.getTimeZone("UTC"));
builder.timeZone(TimeZone.getTimeZone("UTC"));
builder.simpleDateFormat(dateTimeFormat);
builder.serializers(new LocalTimeSerializer(DateTimeFormatter.ofPattern(timeFormat)));
builder.serializers(new LocalDateSerializer(DateTimeFormatter.ofPattern(dateFormat)));
builder.serializers(new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(dateTimeFormat)));
builder.serializationInclusion(JsonInclude.Include.NON_NULL);
builder.serializationInclusion(JsonInclude.Include.NON_EMPTY);
builder.deserializers(new LocalTimeDeserializer(DateTimeFormatter.ofPattern(timeFormat)));
builder.deserializers(new LocalDateDeserializer(DateTimeFormatter.ofPattern(dateFormat)));
builder.deserializers(new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(dateTimeFormat)));
builder.featuresToDisable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
builder.featuresToDisable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);
builder.featuresToDisable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
builder.featuresToDisable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
};
}
}

71
src/main/java/com/palnet/biz/config/SwaggerConfig.java

@ -0,0 +1,71 @@
package com.palnet.biz.config;
import io.swagger.v3.oas.models.parameters.Parameter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.ApiKey;
import springfox.documentation.service.AuthorizationScope;
import springfox.documentation.service.SecurityReference;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@Configuration
//@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.OAS_30) // open api spec 3.0
.apiInfo(new ApiInfoBuilder().version("1.0").title("PAV").build())
.forCodeGeneration(true).securitySchemes(Arrays.asList(apiKey()))
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.apiInfo(apiInfo())
.directModelSubstitute(Date.class, String.class)
.directModelSubstitute(LocalDate.class, String.class)
.directModelSubstitute(LocalDateTime.class, String.class)
.securityContexts(Arrays.asList(securityContext()))
.securitySchemes(Arrays.asList(apiKey()));
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("PAV API")
.description("----")
.version("1.0")
.build();
}
//ApiKey 정의
private ApiKey apiKey() {
return new ApiKey("Authorization", "Authorization", "header");
}
//JWT SecurityContext 구성
private SecurityContext securityContext() {
return SecurityContext.builder().securityReferences(defaultAuth()).build();
}
private List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEveryThing");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return Arrays.asList(new SecurityReference("Authorization", authorizationScopes));
}
}
Loading…
Cancel
Save