Spring Boot

Object Mapper에 모범사례 실습

운동하는 주니어개발자 2023. 4. 22. 02:01

정보처리산업기사 공부를 하고 시험을 보고 오랜만에 다시 Spring으로 돌아왔다!!

시험 결과에 대해서는 그냥 그렇지만 결과가 나와야 정확하게 알거같다... 암튼!! 결과가 나오기 전까지는 Spring에 집중을 하고 공부를 할 수 있을거같다!! 그럼 오늘 공부한 내용을 작성해보겠다

오늘 배운 내용은 마지막 시간에 이어서 Spring_Boot중에서 Object Mapper에 모범사례에 대해 실습을 하고

스프링 핵심에 대해 간략하게 공부하였다. 우선 Object Mapper에 모범사례에 대해 작성하겠다.

ObjectMapperApplicationTests

package com.example.objectmapper;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class ObjectMapperApplicationTests {

    @Test
    void contextLoads() throws JsonProcessingException {
        System.out.println("------------");

        // Text JSON -> Object
        // Object -> Text JSON

        // controller req json(text) -> object
        // response object -> json(text)

        var objectMapper = new ObjectMapper();

        // object -> text
        // object mapper가 get method를 활용한다.
        var user = new User("steve", 10, "010-1111-2222");

        var text = objectMapper.writeValueAsString(user);
        System.out.println(text);

        // text -> object
        // object mapper는 default 생성자를 필요로 한다.
        var objectUser = objectMapper.readValue(text, User.class);
        System.out.println(objectUser);

    }

}

User.java

package com.example.objectmapper;

import com.fasterxml.jackson.annotation.JsonProperty;

public class User {
    private String name;
    private int age;

    @JsonProperty("phone_number")
    private String phoneNumber;

    public User() {
        this.name = null;
        this.age = 0;
        this.phoneNumber = null;
    }

    public User(String name, int age, String phoneNumber) {
        this.name = name;
        this.age = age;
        this.phoneNumber = phoneNumber;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", phoneNumber='" + phoneNumber + '\'' +
                '}';
    }
}

결과화면

이렇게 객체를 이용하여 매핑하고 데이터의 결과를 가져오는 예제 실습이다. Text JSON을 -> Object로 바꿔 주고 controller req json(text) -> object로 response object -> json(text)로 바꿔줄 수 있다.

object를 -> text로 바꿀때에는 object mapper가 get method를 활용하고 text를 -> object로 바꾸어 줄때는

object mapper는 default 생성자를 필요로 한다. 그리고 다음으로 공부한 내용은 Spring 핵심에 대해 공부했다.

스프링의 핵심

Spring 1.0버전은 2004년 3월 출시되었고 지난 20년 가까이의 세월 동안 단 한번도 자바 엔터프라이즈 어플리케이션 개발의 최고의 자리를 차지하였다. 스프링 프레임워크의 구성은 20여가지로 구성된다.

이러한 모듈들은 스프링의 핵심기능 (DI, AOP, etc)을 제공해 주며 필요한 모듈만 선택하여 사용 가능하고

현재 단일 아키텍처 마이크로서비스 아키텍처로 변환 중이다.

여기에 맞춰서 스프링도 진화하고 있는 상태이다.

여러 가지 모듈이 있지만 그 중에서 단연 스프링 부트, 스프링 클라우드, 스프링 데이터, 스프링 배치, 스프링 시큐리티에 중점을 둔다. Spring의 과제는 “테스트의 용이성”, “느슨한 결합”에 중점을 두고 개발을 하고

2000년대 초의 자바 EE 애플리케이션은 작성/테스트가 매우 어려웠으며 한번 테스트 하기가 번거로웠다.

이로 인하여 느슨한 결합이 된 애플리케이션 개발이 힘든 상태였으며 특히 데이터베이스와 같이 외부에 의존성을 두는 경우 단위테스트가 불가능했다.

IoC의 등장 - 스프링이 다른 프레임워크와 가장 큰 차이점이 IoC를 통한 개발 진행

.

AOP - AOP를 사용하여 로깅, 트랜잭션 관리, 시큐리티에서의 적용 등 AspectJ와 같이 완벽하게 구현된 AOP와 통합하여 사용 가능 하다.

이렇게 오늘 공부한 내용에 대해 작성해보았다. 다음시간에는 IoC와 DI가 무었인지에 대해 배우고 실습이 있으면 실습까지 할 예정이다. 시간상 AOP까지 공부할 계획이다. 확정은 아니지만 일단 IoC와 DI에 대해 공부를 해보고 시간이 남는다면 AOP까지 공부할 예정이다. 그럼 다음 시간에 돌아오겠다. 수고링 ~~

'Spring Boot' 카테고리의 다른 글

AI 검증 비즈니스 프로젝트  (0) 2024.08.23
IoC, DI  (0) 2023.04.22
PUT, DELETE, Response내려주기 실습  (0) 2023.04.22
GET(QueryParame ter), POST  (0) 2023.04.22
GET API 실습  (0) 2023.04.22