Spring 프레임워크란❔


Spring Framework는 Java 애플리케이션 개발을 위한 포괄적인 인프라 지원을 제공하는 Java 플랫폼이다. Spring은 인프라를 처리하므로 애플리케이션에 집중할 수 있다.


[출처] spring.io


스프링 프레임워크는 가벼우면서도 대규모 개발을 지원하는 엄청난 프레임워크다. EJB에서 POJO로 바뀌면서 사용하는 클래스가 구조적으로 간결해졌다. 여기서 EJB와 POJO는 무엇인가?

1. EJB(Enterprise JavaBeans)

EJB는 기업환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델이다. 복잡한 Enterprise 서비스를 개발하는데 복잡한 비즈니스 로직Low-level의 처리를 분리시켜 개발자로 하여금 비즈니스 로직에만 집중할 수 있게 만들어 주었다. EJB에서의 문제점은 비즈니스 object 들은 JAVA 본연의 객체지향의 특징과 장점을 포기해야 했다.

  • 상속, 다형성 등 객체지향의 이점을 누릴 수 없다.
  • 하나의 기능을 구현하기 위해서 EJB에서 구현된 불필요한 object들부터 상속 받아야 했고 이렇게 함으로써 개발에서의 테스트가 용이하지 않고 문제점을 찾기도 힘들어졌다.

여기서 EJB의 문제점 때문에 개발자들이 POJO 방식을 선택하게 되고, 그 설계원칙을 반영하여 만든 프레임워크가 Spring이다.

2. POJO(Plain Old Java Object, 단순한 자바 오브젝트)

POJO는 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트이다.

  • 깔끔한 코드
  • 간편한 테스트
  • 객체지향적인 설계를 자유롭게 적용
    객체지향 프로그램은 엔터프라이즈 시스템에서와 같이 복잡한 도메인을 가진 곳에서 가장 효과적으로 사용될 수 있다.

Spring 프레임워크의 특징

1. DI(의존성 주입, Dependency Injection)

빈의 상호 연결은 의존성 주입이라고 알려진 패턴을 기반으로 수행된다.
컨테이너에서 모든 애플리케이션 컴포넌트를 생성, 관리하고 해당 컴포넌트를 필요로 하는 빈에 주입(연결) 한다. 특정 클래스가 제 기능을 다하기 위해, 다른 클래스의 생성을 필요로 하는 경우 클래스 간에 의존성이 존재한다고 표현한다.

class Car{
	Tire tire;
    
    public Car(){
    	this.tire = new Tire();
    }
}

보통 의존 관계는 new 키워드를 선언하는 것과 밀접한 관련이 있다. 위의 코드에서 Car 클래스는 Tire 클래스를 필요로 하며, 따라서 Car 클래스는 Tire 클래스에 의존성을 가진다고 할 수 있다.

하지만, 위와 같은 코드는 우선 Car 클래스와 Tire 클래스 간의 결합도가 높기 때문에 하나를 수정하면 다른 하나를 수정해야 하는 번거로움이 존재한다. 따라서, 결합도를 낮출수록(= 의존성, 종속성을 줄일수록) 코드의 재활용성 및 유연한 코드 작성이 가능해진다.

의존성의 주입은 아래처럼 생성자나 setter 메소드를 통해서도 가능하다. new를 통해 직접 생성하지 않고, 외부에서 생성한 객체를 가져와 인스턴스에 할당하는 것이다.

class Car{
	Tire tire;
    
    public Car(Tire tire){
    	this.tire = tire;
    }
    public void setTire(Tire tire){
    	this.tire = tire;
    }
}

2. IOC

3. AOP

좋은 웹페이지 즐겨찾기