스프링 프레임워크(스프링)는 Java에서 가장 많이 사용하는 프레임워크임
제어의 역전( Inversion of Control, IoC )
객체의 생성, 관리 등 객체에 대한 제어권이 개발자에서 외부(스프링)으로 역전된 것을 뜻함
일반적으로 의존성에 대한 제어권은 개발자가 가지고 있음 ☞ 개발자가 직접 객체를 생성하여 의존성을 해결
스프링에서는 개발자가 직접 객체를 생성하지 않고, 외부(스프링)에게 제어권을 넘김
☞ 이러한 상황을 제어의 역전, IoC라고 함
IoC 컨테이너( = 스프링 컨테이너)
객체 생성의 생명주기 관리 등 책임지고 관리해주는 컨테이너
( * 컨테이너 : 객체들을 담는 공간)
BeanFactory vs ApplicationContext
BeanFactory : 스프링 컨테이너의 최상위 인터페이스로, 관리/조회 역할을 담당
Application Context : BeanFactory의 기능을 모두 상속받아 사용하며 부가 기능들을 추가로 제공
Application Context가 기능들이 더 좋기 때문에 이것을 사용하고, 보통 스프링 컨테이너라고 하면 ApplicationContext를 뜻함
빈( Bean )
스프링 컨테이너에 의해 만들어지고 관리되는 자바 객체( = 클래스 )
의존성 주입( Dependency Injection, DI )
개발자가 객체를 직접 생성하지 않고 외부(스프링)에서 생성한 객체를 개발자가 사용할 수 있도록 주입(Injection)하는 것
제어의 역전(IoC) 개념 안에 DI가 들어감

Maven
사용할 라이브러리와 실행하는데 필요한 하위 라이브러리까지 네트워크를 통해 자동으로 다운로드 해주는 기능
스프링에서는 pom.xml 파일을 사용함
사용하는 이유
1. 개발자별로 라이브러리 버전을 사용하는게 다르다면 중구난방식으로 됨
☞ Maven을 사용하여 버전 통일하기 용이함
2. a 라이브러리를 실행하기 위해 b 라이브러리가 필요하다면 개발자가 직접 추가해줘야함
☞ 의존성 라이브러리까지 해결해주므로 필요한 라이브러리를 설치하기 용이함
3. 라이브러리가 많아질 경우 관리하기 힘듦
☞ pom.xml 파일에서 라이브러리에 대한 정보를 모아봄으로써 관리하기 용이함
구글 검색 "Maven Repository"

Maven Repository - Spring Context 검색 후 클릭하여 취약점, 사용빈도등을 확인 가능

Maven 설정 파일 ( pom.xml )
STS.exe 실행
Java JDK 버전 변경 - pom.xml 파일을 더블클릭 후 아래 내용을 찾고 1.6에서 1.11로 변경(버전에 맞게 설정)

☞ 변경후 설정한 프로젝트 우클릭 -> Maven -> Update Prioject -> Force Update … 체크 후 OK

☞ 위처럼 JavaSE-6에서 JavaSE-11로 변경된 내용을 확인
spring-context 버전 변경 - pom.xml 파일안의 org.springframework-version을 5.3.24로 변경 (버전에 맞게 설정)


☞ 위처럼 Maven Dependencies에서 5.3.24 버전으로 잘 변경 되었는지 확인