본문 바로가기
IT 공부/Spring

스프링 개론

by 쭈잇 2019. 6. 8.

Contents

    반응형

    EJB (Enterprise Java Bean)

    분산된 환경에서의 객체를 의미
    Java Bean이란 자바 객체를 재사용 가능하게 컴포넌트화 시킬 수 있는 코딩 방침을 정의한 것
    (bean은 쉽게 component 또는 객체라고 이해하면 좋음)
    그리고 Java Bean 스펙에 맞게 구현된 코드를 웹에서 쉽게 사용하기 위해서 JSP 표준 액션 태그를 지원한다.
    ( jsp:useBean ... )

     

     

    EJB란 Enterprise 개발을 단순화하기 위해 발표한 스펙
    애플리케이션에는 비지니스와 관련된 객체가 많기 때문에,
    "비지니스 객체들을 관리하는 컨테이너를 만들어서 필요할 때 마다 컨테이너로 부터 객체를 받는 식으로 관리 하면 좋겠다"는 생각으로 부터 탄생.

     

    스프링 탄생 배경

    당시 EJB의 개념이 획기적이었기 때문에 J2EE 서버 개발 벤더들은 EJB 스펙을 구현하여 여러 WAS 제품들을 출시했다.

    ( WebLogic, Jeus 등 ... )

     

    그런데 보안, 트랜잭션, 분산 컴퓨팅 등 컨테이너의 다양한 서비스를 제공 받기 위해서는 EJB 스펙을 지켜야 했으며, EJB 컨테이너가 없을 경우 WAS의 다양한 서비스를 사용할 수 없다는 단점이 있음

    그 결과 서비스가 구현해야 하는 실제 비지니스 로직보다 EJB 컨테이너를 사용하기 위한 상투적인 코드들이 많다는 문제가 발생

    -> 비지니스 로직에 특정 기술이 종속되어 있다는 것 -> 기술의 침투

    => EJB의 가장 큰 문제점

     

    애초에 컨테이너는 필요할 때 마다 다른 객체를 컨테이너에서 받아내는 방식을 통해 객체들간의 의존성 해결이 목적. EJB를 사용하지 않고도 객체간 의존성 해결이 가능한 컨테이너를 개발했는데 이것이 스프링의 시작

     

    스프링은 WAS 의 기능적인 부분을 유지하되 기술 침투적인 부분을 모두 해결해주며, 따라서 개발자는 비지니스 로직에 집중할 수 있도록 해줌.

     

     

    스프링 컨테이너

    스프링 컨테이너는 특정 클래스를 상속하거나 인테페이스를 구현하지 않는 평범한 자바 클래스 (POJO : Plain Old Java Object)를 이용하여 EJB의 기능을 유지하면서 복잡성을 제거하고, 객체들의 라이프 사이클을 관리해준다.

     

     

    각 라이브러리들의 객체들은 스프링 컨테이너에서 관리하기 떄문에 사용법이 일관적이라는 특징

    Spring Container는 위의 그림과 같이 여러 객체들이 모여있는 공장 (Bean Factory)과 같은 개념

    Spring Container를 Bean Factory 또는 IOC Container라고 한다.

     

    의존성 주입(DI) 과 제어 역전 (IoC)

    컨테이너의 주 목적은 의존성 해결

    그렇다면 의존성은 무엇일까?

     

    public class A{
    	public static void main (String[] args){
        	B b=new B():
            b.hello;
        }
    	
    }
    
    class B{
    	public void hello(){
        	System.out.println("hello");
        }
    }

     

    예를 들어보면, A 클래스에서 B 객체가 있어야 B 메서드를 사용할 수 있다.

    그렇기 때문에 A 는 B에 의존적이라 할 수 있다.

     

    스프링 컨테이너에서는 의존성 주입 (DI : Dependency Injection) 을 통해 의존성을 해결

    의존성 주입이란, 사용자가 직접 new 키워드를 사용하여 객체를 생성하지 않고, 외부(컨테이너)에서 생성된 객체를 주입받는 방식을 말한다

     

    설정 파일에서 아래와 같이 bean을 등록해주면 의존성이 해결된다

    <bean id='a' class "A" reg='b'>
    <bean id='b' class="B">

     

    또는 어노테이션 @Autowired를 통해 의존성 주입을 해결

     

    스프링에서는 이와 같이 의존성 주입을 통해 객체 간의 의존성 문제를 해결하며,

    객체의 생성과 소멸을 개발자가 관리하지 않고 스프링에서 관리하는데, 이러한 현상을 제어 역전(IoC : Inversion Of Control )이라 한다

     

     

    스프링은 기술 비침투가 핵심!

     

     

     

    [참고]

    https://victorydntmd.tistory.com/158?category=698080

     

     

     

     

     

    반응형

    'IT 공부 > Spring' 카테고리의 다른 글

    스프링 시작 - 메이븐 프로젝트 생성  (0) 2019.06.08