Spring

태태개발일지 - Spring?

태태코 2024. 9. 20. 23:48
반응형

Spring이 왜 위대한가?

 이 부분에서는 기존에 항해 + 99 에서 배웠던 클린 레이어드 아키텍쳐를 사용했던 이유와 아주 유사하다.

우선 가장 간략하게 설명하면 "객체지향 적으로 만들어 주기 때문" & "DIP와 OCP를 만족시켜 주기 때문이라고 설명을 할 수 있다.

 

이게 무슨소리인지 알아보자.

 

객체지향에서는 다형성이 굉장히 중요하다. 예를 들면

 

public class Animal{


}

 

부모 클래스인 Animal이 있다.

그리고 부모 클래스를 상속 받은 Dog와 Cat이 있다고 가정하자.

 

public class Dog extends Animal {


}
public class Cat extends Animal {


}

 

public Use{
	Animal animal = new Dog(); 

}

 

다음과 같이 Dog를 쓸 수도 있을 것이고, Cat();을 사용할 수 도 있는 것이다. 그렇기 때문에 Dog를 쓸때와 Cat을 사용할 때 Use란 Clinet의 코드를 바꿔 주어야한다. 이는 OCP와 DIP를 만족하지 못한다고 할 수 있다.

이를 만족해 주기 위해서는 

 

public Use{
	Animal animal = new Animal(); 

}


이렇게 하고 의존성을 주입받는 방식을 통해서 OCP와 DIP를 만족시킬 수 있다.

 

public Config{
	public Animal animal (){
     return new Dog();
    }

}

 

이런 식으로 Config파일을 만들고, main 메서드에서 config파일을 읽어 Use에서 Aimal을 생성할 때 주입해주어야한다.

 

이런 복잡한 방식을 Spring이 해결해주는데 바로

@Configration Annotation과 @Bean Annotation으로 DIP와 OCP를 만족시켜준다.

 

Spring Container는 DI와 IOC 개념을 통해 Bean을 등록하고 관리해 주게 된다.

@Bean으로 등록해 주게 된다면.  생성자를 호출할 때 Spring Container가 Bean을 검색하고, 그에 맞는 클래스를 주입해주는 역할을 하기 때문에 Spring의 등장이 아주 혁명적이였던 것이다.

 

반응형