스프링에서 객체를 직접관리하는데 그렇게 직접관리 되는 객체를 bean라 하고 그 bean들이 관리되는 장소가 Spring Container인 것이다. 그리고 Spring Container가 이렇게 객체들을 제어하는 권한을 개발자로부터 가져갔기 때문에 ioc(제어역전현상)이라고 말한다. 다음의 예제 코드를 살펴보자. 먼저 iocSpring이라는 웹앱의 예제코드이다. (설명은 주석으로 작성함) 1.iocSpringApplication.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 ..
DI(Dependency Inject)이란 객체를 직접 생성하는 것이 아니라 외부에서 생성한 후 주입시키는 것을 말한다. 기본적으로 Spring에서는 이러한 방식을 사용하고 있다. 아래는 DI에 관한 예제 코드이다. 1. Main.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 package com.company.ioc; public class Main { public static void main(String[] args) { String url = "www.naver.com/books/it?page=10&size=20&name=spring-boot"; /..
Why We Use Sping and EJB 2000년 초반 자바진영에서 EJB라는 것이 존재했었다. EnterPrise Java Beans을 말하는데 스프링이랑 JPA같은 다합쳐놓은 종합세트느낌이였다. 이때까지만 해도 EJB는 자바의 표준 기술이었기때문에 금융권에서 널리사용되었다. 그래서 금융권에서 EJB 기술을 사용해서 서버를 팔아먹기에 좋은 keyword였다. 그 당시에 Container 기술, 설정에 의한 트랙잭션관리, 분산처리 기술(지금으로 따지면 service, dao로 분리) 와 같은 고급기술들을 사용할 수 있었다. 그리고 이때 ORM으로 EntityBean이라는 ORM 기술을 가지고 있었는데, DB에 저장된 데이터를 Java의 객체로 표현하기 위한 EJB Component였다. 지금이야 톰..
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("hello"); // Object Mapper..
들어가며 모든 클래스의 가장 최상위 클래스인 Object 클래스가 있다. 이때 Object 클래스가 가진 메소드 중 toString이라는 메소드가 있는데 이 toString이라는 메소드는 객체가 가지고 있는 정보나 값들을 문자열로 만들어 리턴하는 메소드이다. 그렇다면 우리가 너무나도 당연하게 작성하는 아래와 같은 DTO 클래스에서 toString 메소드는 왜 만들어줄까? package com.example.put.dto; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.ArrayList; public class PutRequestDto { private String name; private int age; @JsonProper..
VO(Value Object) - 데이터 그 자체로 의미 있는 것을 담고 있는 객체이다. DTO(Data Transfer Object) - 전송되는 데이터의 컨테이너 DTO도 VO와 동일하게 데이터를 저장하여 사용한다. 다만 VO와 비교해서 다른 것은 DTO는 같은 시스템에서 사용되는 것이 아닌 다른 시스템으로 전달하는 작업을 처리하는 객체일 때 DTO라고 한다. VO/DTO에 대한 논쟁도 많고 반드시 사용 용도를 구분하는 건 무의미하다고 하니 개발팀내에서 용도를 정해서 사용하면 된다고 한다. 예를 들어 외부시스템과 데이터 통신을 할 경우에는 DTO로, DB에서 가져오는 Data는 VO로 정의해서 사용한다고 약속을 하는 식으로 말이다.