Spring framework에 대한 특징
2022, Jan 06
알아보게 된 이유.
스프링을 개발하면서 특징에 대해 잘모르고 개발을 하고 있는 것 같아서 하나씩 정리해보기로 한다.
정리를 해보자.
SpringFramework의 특징
- 서비스 추상화
- 트랜잭션 추상화, OXM 추상화, 데이터 엑세스의 Exeption 변환기능 등 기술적인 복잡함은 추상화를 통해 Low Level의 기술구현부분과 기술을 사용하는 인터페이스로 분리한다.
- 객체 지행과 DI(Dependency Injection)
- 스프링은 객체지향에 충실한 설계가 가능하도록 단순한 객체형태로 개발할 수 있고, DI는 유연하게 확장 기능한 객체를 만들어 두고 그 관계는 외부에서 다이내믹하게 설정해준다.
- AOP(Aspect Oriented Programming)
- AOP는 애플리케이션 로직을 담당하는 코드에 남아있는 기술 관련 코드를 분리해서 별도의 모듈로 관리하게 해주는 강력한 기술이다.
- POJO(Plain Old Java Object)
- POJO는 객체지향 원리에 충실하면서, 특정 환경이나 규약에 종속되지 않고 필요에 따라 재활용 될 수 있는 방식으로 설계된 객체이다.
DI 의존성 주입 간단한 예시
public class ElectronicCarToy{
private Bettery battery;
public ElectronicCarToy(){
battery = new NormalBattery();
}
}
위 장난감은 배터리가 고장 났을 시 장난감을 바꿔야 한다.
public class ElectronicCarToy{
private Bettery battery;
public ElectronicCarToy(){
}
public void setBattery(Battery battery){
this.battery = battery;
}
}
setter생성자를 이용해서 외부에서 주입을 하게 되면 외부에서 배터리를 교체 해 줄 수 있다.
@Service
Public class BookService(){
private BookRepository bookRepository;
Public BookService(BookRepository bookRepository){
this.bookRepository = bookRepository;
}
}
@Service
Public class BookRepository{
}
위 코드처럼 BookService 클래스가 만들어지기 위해서는 BookRepository 클래스를 필요로 하기 때문에 BookService는 BookRepositry 의 의존성을 가진다.