Spring framework에 대한 특징

Spring framework에 대한 특징

2022, Jan 06    

알아보게 된 이유.

스프링을 개발하면서 특징에 대해 잘모르고 개발을 하고 있는 것 같아서 하나씩 정리해보기로 한다.

정리를 해보자.

SpringFramework의 특징

  1. 서비스 추상화
    • 트랜잭션 추상화, OXM 추상화, 데이터 엑세스의 Exeption 변환기능 등 기술적인 복잡함은 추상화를 통해 Low Level의 기술구현부분과 기술을 사용하는 인터페이스로 분리한다.
  2. 객체 지행과 DI(Dependency Injection)
    • 스프링은 객체지향에 충실한 설계가 가능하도록 단순한 객체형태로 개발할 수 있고, DI는 유연하게 확장 기능한 객체를 만들어 두고 그 관계는 외부에서 다이내믹하게 설정해준다.
  3. AOP(Aspect Oriented Programming)
    • AOP는 애플리케이션 로직을 담당하는 코드에 남아있는 기술 관련 코드를 분리해서 별도의 모듈로 관리하게 해주는 강력한 기술이다.
  4. 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 의 의존성을 가진다.