POJO (Plain Old Java Object)
특정 자바 모델이나 기능 프레임워크 등을 따르지 않은 자바 오브젝트를 지칭하는 말로 사용되었다.
자바 언어 사양 외에 어떠한 제한에도 묶이지 않은 자바 오브젝트로 다음과 같은 행동을 해서는 안된다.
- 미리 정의된 클래스의 확장
- 미리 정의된 인터페이스의 구현
- 미리 정의된 애너테이션을 포함
그러나 기술적 어려움이나 기타 이유로 많은 프레임워크들이 미리 정의된 애너테이션의 사용을 요구한다.
DI (Dependency Injection 의존성 주입)
각각의 계층이나 서비스들 강에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
객체를 직접 생성하는게 아니라 외부에서 생성한 후 주입시켜주기 때문에
모듈 간의 결합도가 낮아지고 유연성이 높아진다.
DI의 종류
- Setter Injection
B b = new B();
A a = new A();
a.setB(b); // setter injection
- Construction Injection 생성자 주입
B b = new B();
A a = new A(b); // injection
spring의 DI
- 어노테이션을 활용한 DI
-> 어노테이션이란 @를 붙여 사용하는 특별한 의미가 있는 주석
-> 컴파일러가 특정 오류를 억제하도록 지시하는 것과 같이 프로그램 코드의 일부가 아닌
프로그램에 관한 데이터를 제공, 코드에 정보를 추가하는 정형화된 방법
-. xml을 활용한 DI
-> xml에서 bean으로 class를 등록해서 의존관계를 연결해주는 방식
IoC (Inversion of Control 제어 역행)
- 메소드나 객체의 호출 작업을 개발자가 결정하는 것이 아니라 외부에서 결정되는 것을 의미한다.
- 개발자는 프레임워크에 필요한 부품을 개발하고 조립하는 방식의 개발을 하게 되며 조립된 코드의 최종 호출은
개발자에 의해서 제어되는 것이 아니라 프레임워크의 내부에서 결정된 대로 이루어지게 되는데 이러한 현상을 제어의 역전이라고 표현한다.
- 의존적인 객체를 직접생성하거나 제어하는 것이 아니라 특정 객체에 필요한 객체를 외부에서 결정해서 연결해주므로
모듈 간의 결합도가 낮아지고 유연성이 높아진다.
'Java' 카테고리의 다른 글
네이버 로그인 API 구현 java/spring (1) | 2022.07.11 |
---|---|
spring DI, AOP (0) | 2022.06.14 |
토이 프로젝트 주식 커뮤니티 만들기(4) - 클래스 다이어그램 (0) | 2022.05.19 |
토이 프로젝트 주식 커뮤니티 만들기(3) - DB (0) | 2022.05.18 |
토이 프로젝트 주식 커뮤니티 만들기(2) - 스토리보드 (0) | 2022.05.09 |