@Bean은 메소드 레벨에서 선언하며, 반환되는 객체(인스턴스)를 개발자가 수동으로 등록하는 Annotation인 반면에 @Component는 클래스 레벨에서 선언하며 스프링이 Runtime(실행) 될 시에 Component를 스캔하여 자동으로 bean을 찾고 등록하는 Annotation이다. Bean Component 메소드에 사용 클래스에 사용 개발자가 컨트롤이 불가능한 외부 라이브러리 사용시 사용 개발자가 직접 컨트롤이 가능한 내부 클래스에 사용 추가적으로 @Configuration은 @bean과 동일하게 개발자가 컨트롤이 불가능한 외부 라이브러리 사용시 한번에 여러개의 Bean을 등록하기 위해서 사용하는 Annotation이다. @Configuration 예제 코드 12345678910111213..
스프링에서 객체를 직접관리하는데 그렇게 직접관리 되는 객체를 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..