별도의 프레임워크 없이 작성되는 순수 자바 클래스
로깅, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용되는 기능을 분리하여 관리
구성 요소 간의 의존 관계를 외부에서 주입해주도록 설정
외부 라이브러리, 프레임워크가 개발자의 코드를 호출하도록 함 (제어권이 외부 라이브러리, 프레임워크에 있음)
- 응용 프로그램, 어플리케이션을 효율적으로 구현하기 위해 필요한 설정을 미리 작성하여 모아둔 틀, 규칙
- 어플리케이션 구현에 필요한 설정을 미리 작성하여 개발자는 비즈니스 로직에 집중할 수 있도록 도와줌
- 설정 (Configuration) 보다 비즈니스 요구사항에 집중하여 개발할 수 있음
- 비용 절감 효과가 있음
- 오픈 소스이다보니 오랜 기간동안 확립된 디자인 패턴에 기반하여 작성됨
- 표준을 준수할 수 있음
- 프레임워크이다보니 정해진 규칙에 따라 코드를 작성해야 함
- 자바와 코틀린으로 한정되어 작성해야 함
스프링 빈 (Bean) => 스프링 프레임워크에서 관리되는 자바 객체
- 인스턴스의 생성과 의존 관계를 소스 코드가 아닌 IoC 컨테이너가 하는 소프트웨어 디자인 패턴 중 하나
- 스프링 컨테이너에 Bean 을 미리 생성해두고, 해당 Bean 이 필요한 객체에 스프링 컨테이너가 주입하는 방식