Java로 다양한 애플리케이션을 만들 수 있도록 돕는 경량급 오픈소스 프레임워크
특정 자바 모델이나 기능, 프레임워크를 따지지 않는 Java Object
EJB의 Java Bean이 아닌 Getter와 Setter로 구성된 가장 순수한 형태의 기본 클래스
제어의 역전
개발자가 직접 객체를 제어하지 않고 외부에서 제어하는 것
Spring에서는 Spring의 컨테이너에서 객체 제어
객체의 생성에서부터 생명주기의 관리까지 모든 제어를 외부에서 함
객체 간의 결합도를 줄이고 유연한 코드를 작성하게 함
IoC로 인해 DI와 AOP가 가능하게 됨
의존성 주입
객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입을 시켜주는 방식
//new를 이용해 직접 객체 생성
public class AService{
private ARepository aRepository = new ARepository();
}
//외부에서 주입 받음
public class AService{
private ARepository aRepository;
public AService(ARepository aRepository){
this.aRepository = aRepository;
}
}
관점 지향 프로그래밍
흩어진 관점(관심사)들을 모아서 모듈화 하는 기법 즉, 중복된 부분을 분리하여 모듈화
애플리케이션의 구성 요소를 3가지(Model, View, Controller)로 분리한 디자인 패턴
Model : 애플리케이션의 정보(data)
View : 사용자에게 보여지는 부분
Controller : 사용자의 요청에 따른 이벤트 수행
Spring이 설정하는 것에 어려움을 가지고 있는데, 이를 개선하기 위해 나타난 것이다.
출처
https://jins-dev.tistory.com/entry/Spring-%EC%9D%98-%EA%B8%B0%EB%B3%B8%EC%9D%B4-%EB%90%98%EB%8A%94-POJO-%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC
https://velog.io/@gillog/Spring-DIDependency-Injection
https://mo-world.tistory.com/entry/IOC%EC%99%80-DI-%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC-%EC%8A%A4%ED%94%84%EB%A7%81-%EA%B0%9C%EB%85%90-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85
https://engkimbs.tistory.com/746
https://ooeunz.tistory.com/56