2023. 3. 21. 23:57ㆍWEB개발/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 |