Spring
-> Java 언어 기반으로 사용
-> Java 오픈소스 웹 프레임워크
-> 비즈니스 로직 단순화
Spring 특징
-> 1. IoC (Inversion of Control)
-> 역전의 제어라고 부름
-> new 연산자, 인터페이스 호출, 데이터 클래스 호출 방식으로 객체 생성 및 소멸
-> 이 과정을 IoC가 생명주기를 제어하는 역할
-> 코드의 유연성 및 가독성 증가 (중복 코드 최소화)
-> 객체 생성 -> 의존성 객체 주입 -> 의존성 객체 메서드 호출
-> 2. DI (Dependency Injection)
-> 의존성 주입이라고 부름
-> 디자인 패턴 중 하나, IoC의 기능을 구현하기 위해 사용
-> Bean을 싱글톤으로 관리
-> 객체 간 의존성 관계를 줄임
-> 3가지 종류 : Field Injection, Setter Injection, Constructor Injection
-> Field Injection : 필드에 의존 관계를 주입
-> Bean으로 등록된 객체를 사용하려는 클래스에 @Autowired Annotation 키워드를 붙여주면 자동으로 주입
-> 외부에서 접근이 불가능
-> DI Framework가 필수적으로 존재해야 함
-> Setter Injection : Setter에 의존 관계를 주입
-> 기본 생성자, Setter 메소드 필요
-> propery 엘리먼트 사용
-> Constructor Injection : 생성자에 의존 관계를 주입
-> 컨테이너와 독립적으로 클래스 작성 가능
-> final 필드 선언 가능
-> 가장 많이 쓰이는 방식