Spring Framework란?
수업블로그 주소
https://blog.naver.com/drv982/222898670671


프로그램 설치 및 버전 확인
- JDK 설치 확인 (환경변수)
- cmd창에서 검색


jdk1.8버전 다운로드 -> SPRING 폴더 만들고 안에 넣기 이름 너무 길면 변경하면 됨

java ee 8버전(2020-06)으로 다운로드 -> SPRING 폴더안에 넣기



jdk1.8 폴더 - bin 절대경로 복사

eclipse.ini 파일을 메모장으로 열어서 위의 경로 추가해줘야함
(자바 여러개 있을때 java ee를 실행하기 위해)

이클립스 springframework 폴더로 저장 경로 설정

폰트 설정

4가지 UTF-8로 설정

프레임워크(Framework)
- 뼈대나 근간을 이루는 코드들의 묶음
- 사용해야 하는 이유
- 어느정도 완성한 상태에서 필요한 부분을 조립하는 형태의 개발이 가능
- 일정한 품질이 보장된 결과물
(개발자와 상관없이 어느정도 비슷한 결과물을 얻을 수 있음)
- 개발 시간 단축
스프링 프레임워크(Spring Framework)
- 자바 플랫폼을 위한 오픈 소스 애플리케이션
- JAVA 기반의 프레임워크로서 여러 모듈로 구성되어 있는데, 이중 웹 어플리케이션을 만들고자 등장한게 SpringMVC 모듈 (SpringFramework는 웹 프레임워크가 아님)
- 초기 설정이 매우 복잡
자바 프로젝트 만들기(스프링 프레임워크와 비교하기 위함)
- 스프링 프레임워크를 왜 사용해야하는지 비교하기 위함

다형성(Polymorphism)
- 객체 지향 패러다임의 4가지 주요 특성인 “캡슐화”, “추상화”, “다형성”, “상속”
- 다형성이란 하나의 타입에 여러 객체를 대입할 수 있는 성질
(이때 상속이나 구현을 통해 부모타입에 다양한 형태의 객체를 대입 가능)
- 다형성을 활용하면 기능을 확장하거나, 객체를 변경해야할 때 타입 변경 없이 객체 주입만으로 수정이 일어나게 할 수 있다. 또한 상속을 사용한다면 중복되는 코드까지 제거할 수 있으므로 더욱 객체 지향 설계와 가까워질 수 있다.

자바 프로젝트에 스프링 프레임워크 적용

메이븐 프로젝트 만들기

빌드패스 => Facets 자바버전 1.8 (8버전)으로 설정해줘야함

Spring Context 다운

dependency 복사해서 pom.xml에 추가

스프링 프레임 워크의 가장 기초 디펜던시들이 다운 받아짐

로그 기록하기 slf4j , logback

beans.xml

Logging 이란 ?
- 프로그램 개발 중이나 완료 후 발생할 수 있는 오류에 대해 디버깅하거나 운영 중인 프로그램 상태를 모니터링 하기 위해 필요한 정보(로그)를 기록하는 것
- 애플리케이션 실행에 대한 추적을 기록하기 위해 어딘가에 메시지 (콘솔, 파일, 데이터베이스 등)를 작성하는 것
- 디버깅 : 사용자 상호 작용 기록 (발생하는 이벤트 기록)
pom.xml 파일에 디펜던시 추가

main에서 실행

beans.xml 에 빈 추가하기


등록된 bean 객체만 En으로 변경하고 MainClass 실행 => En 메서드 실행됨
beans.xml 파일에서 빈 객체를 등록하면 객체가 프레임워크에 의해 스스로 생성됨


IOC 컨테이너

- IoC(제어 반전)이란, 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미
- 인스턴스 생성부터 소멸까지의 인스턴스 생명주기 관리를 개발자가 아닌 컨테이너가 대신 해줍니다.


IOC 메이븐 프로젝트 생성

IOC/pom

beans.xml

TestBean.java

MainClass.java
- xml파일이 클래스 내부 또는 외부에 있을 경우
내부 : ClassPathResource res = new ClassPathResource("com/demo/config/beans.xml");
외부 : FileSystemResource res = new FileSystemResource("beans.xml");
- 빈팩토리는 스프링프레임워크 3.0이하 사용 => 4.0이상부터 종료됨




IOC 빈 객체 생성하기

BeanCreate 메이븐 프로젝트 생성

beans.xml

MainClass.java


