Spring(DTO&VO, Bean, Annotation)

2023. 3. 21. 23:57WEB개발/TIL

반응형

DTO

Data Transfer Object

계층 간 데이터 교환을 위해 사용하는 객체

다른 로직을 가지지 않는 순수한 데이터 객체(Java Beans)

 

VO

Value Object

DTO와 비슷하지만, VO는 read-only 속성을 갖고 있는 객체

Getter만 가지고 있어 에 대한 수정 불가능

다른 로직 가질 수 있음

 

  DTO VO
목적 계층간 데이터 전달 값 자체 표현
동등성 필드(변수)값이 같아도 같은 객체 아님 필드(변수)값이 같으면 같은 객체
가변성 setter 존재 시, 가변
setter 비존재 시, 불가변
불변
로직 getter/setter 외의 로직이 필요하지 않음 getter/setter 외의 로직이 있어도 무

 

 

 


Bean

Spring IoC 컨테이너가 관리하는 Java 객체

Spring에서는 new를 사용해 만들어진 객체가 아닌 Spring에서 관리하는 Bean이라는 객체를 사용함

 

장점

1. IoC에 등록된 Bean들은 의존성 관리가 용이함.

2. 똑같은 객체가 여러 번 만들어지는 것이 아니라 하나를 만들고 재사용하기 때문에 메모리 절약에 도움됨.

 

Bean 등록 방법

1. @Component 사용: 클래스 선언부 위에 작성

2. 자바 설정 클래스 직접 생성

  2.1. 설정 클래스 생성 후, 클래스 선언부 위에 @Configuration 작성

  2.2. 해당 클래스 안의 메서드에 @Bean 작성

// ex
@Configuration
public class ApplicationConfig {
	@Bean
	public ArrayList<String> array1() {
		return new ArrayList<String>();
	}
	@Bean(name="myarray")
	public List<String> array2() {
		return new List<String>();
	}
}

이렇게 등록한 Bean은 @Autowired를 붙여 의존성을 주입 받아 사용할 수 있음

 

 

 


Annotation(@)

사전적 의미로 주석

Java에서 @는 코드 사이에 주석처럼 쓰이며 특별한 의미 혹은 기능을 수행하게 해줌.

프로그램에서 추가적인 정보를 제공해주는 메타데이터

 

장점 및 사용순서

1. 장점: 코드량 감소, 유지보수 용이, 생산성 증가

2. 사용 순서

  2.1. Annotation(@) 정의 후, 클래스에 배치

  2.2. 코드가 실행되는 중 Reflection을 사용하여 추가 정보를 획득해 기능을 실시

Reflection: 객체를 통해 클래스의 정보를 분석해내는 프로그램 기법

 

종류

1. @Bean

개발자가 직접 제어가 불가능한 외부 라이브러리 등을 Bean으로 등록하고자 할 때 사용되는 Annotation

2. @Component

개발자가 직접 작성한 Class를 Bean으로 등록하기 위한 Annotation

3. @SpringBootApplication

@Configuration, @EnableAutoConfiguration, @ComponentScan 3가지가 합쳐진 Annotation

Spring Boot 애플리케이션 실행 초기 진입점에 위치하는 어노테이션

4. @Autowired

스프링 컨테이너에 등록한 Bean에게 의존 관계 주입이 필요할 때, DI(의존성 주입)를 도와주는 Annotation

즉, @Autowired를 사용한 클래스에서 @Autowired가 적용된 클래스를 사용할 수 있게 해줌

 

반응형

'WEB개발 > TIL' 카테고리의 다른 글

Persistence Framework와 Mybatis  (0) 2023.03.24
Spring에서 REST API  (0) 2023.03.22
REST API  (0) 2023.03.21
Spring 정의, Spring Boot, Thymeleaf 문법  (0) 2023.03.21
Java(추상클래스, 인터페이스)  (0) 2023.03.09