제어의 역전(IoC) : 객체 생성의 제어권을 외부로 넘긴다.
의존성 주입(DI) : 외부에서 생성된 객체를 주입받는 개념
(@Autowired 역할)
1. 필드 주입
@Autowired
어노테이션을 붙여서 의존성 주입2. 수정자 주입
@Autowired
어노테이션을 붙여서 의존성 3. 생성자 주입
@Autowired
어노테이션을 붙여서 의존성 주입@Component
를 쓰게되면 객체 생성 제어권을 가진 HotelManager 역할을 스프링이 하게된다.@Component
: 스프링의 컴포넌트 스캔 기능을 사용하여 빈으로 등록하고자 하는 클래스에 사용합니다.@Autowired
: 자동 주입을 위한 아노테이션으로, 스프링 컨테이너가 해당 타입에 맞는 빈을 자동으로 주입합니다.@Qualifier
: 여러 개의 빈이 등록되어 있을 때, 어떤 빈을 주입할지 선택하기 위한 아노테이션입니다.@Controller
: 스프링 MVC에서 컨트롤러 역할을 하는 클래스에 사용합니다.@Service
: 비즈니스 로직을 처리하는 서비스 클래스에 사용합니다.@Repository
: 데이터베이스와 관련된 작업을 처리하는 DAO 클래스에 사용합니다.@Configuration
: 자바 기반의 스프링 설정 클래스에 사용합니다.@Bean
: @Configuration
클래스에서 스프링 빈을 직접 등록하기 위한 아노테이션입니다.@Scope
: 빈의 범위를 지정하기 위한 아노테이션으로, singleton
, prototype
, request
, session
, global session
등이 있습니다.@Value
: 프로퍼티 값을 주입하기 위한 아노테이션으로, 스프링의 PropertyPlaceholderConfigurer
를 통해 값을 가져올 수 있습니다.자바 개발을 더 간편하게 만들어주는 라이브러리
package com.study.springstudy.springmvc;
import lombok.*;
@Setter @Getter
@ToString
@EqualsAndHashCode
@NoArgsConstructor // 기본 생성자
@AllArgsConstructor // 모든 필드 초기화 생성자
@RequiredArgsConstructor // 필수 파라미터(final 필드만) 초기화 생성자
public class Student {
// private final String name;
private int age;
private int grade;
}