Spring Framework
<aside>
설명
- POJO 프로그래밍을 지향
- Plain Old Java Object → 순수 java만을 통해서 생성한 객체를 의미
- 이를 통해 외부 기술이나 규약에 상관없이 유연하고 변화와 확장에 대처 가능
- POJO를 위한 지원하는 기술 IoC/DI, AOP, PSA 존재
- EX) Entitiy
</aside>
IoC/DI(Inversion of Control / Dependency Injection)
<aside>
설명
interface I {
void example();
}
class A {
private I i;
public A(I i) {
this.i = i;
}
public void nethodOfA() {
i.example(0;
}
}
class B implements I {
public void example() {
.....
}
}
class C implements I {
public void example() {
.....
}
}
- A는 자신이 사용할 객체를 스스로 생성하지 않고, 생성자를 통해 외부로 받아옴
- 이처럼 A가 사용할 객체를 생성하여 의존 관계를 맺어주는 것을 IoC라 하고, 그 과정에서 C를 A의 생성자를 통해 주입해주는 것을 DI라고 함
</aside>
AOP(Aspect Oriented Programming)
<aside>
설명
- 공통 관심 사항과 관련된 기능들을 별도의 객체로 분리해낸 다음, 분리해낸 객체의 메서드를 통해 공통 관심 사항을 비즈니스 로직으로부터 분리한 것을 의미
</aside>
PSA(Portable Service Abstraction)
<aside>
설명
- 스프링은 java를 사용하여 DB를 접근하는 방법을 규정한 인터페이스를 제공, 이를 JDBC라 칭함
- 각 DB를 만든 회사들은 자신의 DB에 접근하는 드라이버를 JAVA 코드의 형태로 배포하는데, 이 드라이버에 해당하는 JAVA 코드의 클래스가 JDBC를 구현
- 즉 JDBC를 기반으로 하여 DB 접근 코드를 작성하면 DB를 바꿔도 기존에 작성한 DB 접근 로직을 그대로 사용 가능
- 이러한 JDBC처럼 특정 기술과 관련된 서비스를 추상화하여 일관된 방식으로 사용될 수 있도록 한 것을 PSA라 칭함
</aside>