Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,18 @@
import com.mpc.springboot.member.domain.entity.Member;
import com.mpc.springboot.member.domain.vo.MemberCode;
import com.mpc.springboot.member.domain.vo.MemberName;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.*;

@Getter
@RequiredArgsConstructor
@NoArgsConstructor
public class CreateMemberRequest {
private final MemberCode code;
private final MemberName name;
private MemberCode code;
private MemberName name;

public CreateMemberRequest(MemberCode code, MemberName name) {
this.code = code;
this.name = name;
}

public Member toEntity() {
return Member.of(code, name);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.mpc.springboot.member.infrastructure.serialization.jackson;

import com.fasterxml.jackson.databind.module.SimpleModule;
import com.mpc.springboot.member.domain.vo.MemberCode;
import com.mpc.springboot.member.domain.vo.MemberName;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JacksonConfig {

@Bean
public Jackson2ObjectMapperBuilderCustomizer customJackson() {
return builder -> {
SimpleModule module = new SimpleModule();
module.addSerializer(MemberCode.class, new MemberCodeSerializer());
builder.modules(module);
};
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.mpc.springboot.member.infrastructure.serialization.jackson;

import java.io.IOException;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.*;
import com.mpc.springboot.member.domain.vo.MemberCode;

public class MemberCodeDeserializer extends JsonDeserializer<MemberCode> {
@Override
public MemberCode deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
return MemberCode.of(p.getText());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.mpc.springboot.member.infrastructure.serialization.jackson;

import java.io.IOException;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.mpc.springboot.member.domain.vo.MemberCode;

public class MemberCodeSerializer extends JsonSerializer<MemberCode> {
@Override
public void serialize(MemberCode value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeString(value.getValue());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.mpc.springboot.member.infrastructure.serialization.jackson;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.mpc.springboot.member.domain.vo.MemberName;

import java.io.IOException;

public class MemberNameDeserializer extends JsonDeserializer<MemberName> {
@Override
public MemberName deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
JsonNode node = p.getCodec().readTree(p);

// JSON의 루트에서 firstName, lastName 가져오기
String firstName = node.has("firstName") ? node.get("firstName").asText() : "";
String lastName = node.has("lastName") ? node.get("lastName").asText() : "";

return MemberName.of(firstName, lastName);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.mpc.springboot.member.presentation.converter;

import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
import com.mpc.springboot.member.domain.vo.MemberCode;

@Component
public class MemberCodeConverter implements Converter<String, MemberCode> {
@Override
public MemberCode convert(String source) {
return MemberCode.of(source);
}
}