스프링 (느슨한 결합, DI, IoC....)

changi123·2024년 5월 21일
0

공부

목록 보기
6/24
post-thumbnail

느슨한 결합

1. Service : 사용자의 요구에 맞는 서비스를 담당

2. DAO : 데이터 소스에 접근하는 방법 및 구현 기술을 숨기고 Java코드를 이용하여 데이터를 제공 받을 수 있게 해주는 Data Access Object


Service를 변경하기 위해 DAO를 변경하는 경우

1. 코드 수정

2. 코드 덮어쓰기

-> 수동으로 Service코드를 수정하지 않고 변경된 사항을 적용하려면 자동으로 객체를 변경할 수 있도록 처리해야한다. 이때 인터페이스에서는 파일을 읽어와서 자바의 코드를 수정하지 않고 객체의 참조를 변경할 수 있게 한다.

-> 원래 강하게 결합된 두 클래스가 외부 파일을 통해 수정할 수 있는 상태로 바뀐것을 느슨한 결합 이라고 한다.


스프링의 최대 기능

> 객체를 생성해주고 객체들을 조립해준다.

1. DI(Dependency Injection)

(1) DI가 중요한이유

부품 쉽게 갈아끼려고 한다고 생각하면 편하다.

B b = new B(); // 이때 이게 Dependency ( 부품 ) 
A a = new A();
a.setB(b); //  Injection ( a에 주입 ) 

더 쉽게

(1) Setter Injection

처음 사용했던 Setter 가 대표적 예시

-> 조립형 컴퓨터

(2) Construction Injection

-> 완성형 컴퓨터 (스프링을 사용하는 가장 큰 이유)


2. IoC Controller

컴퓨터 주문서 -> XML파일/Annotaion

Container -> 객체를 담는 공간

(1) 일체형 결합

-> 큰 부품을 만듬 -> 작은 부품들

(2) 조립형 결합 ( IoC Container )

-> 작은 부품을 결합 -> 큰부품 -> 더 큰 부품으로 결합 ( 이게 제어의 역전 / Inversion of Control )

3. Annotation 사용 이유

(1) 과거 xml을 통해 개발했지만 좀 더 편하게 bean의 의존성 주입을 하기 위해서

xml -> java ( @Autowired 로 대체 )
<property name="exam" ref="exam" />
@Autowired
private Exam exam;
profile
개발자 홍찬기 꾸준한 사람이 되자

0개의 댓글

관련 채용 정보