스프링 부트에 대해서

스프링과 스프링부트

스프링의 등장

스프링 프레임워크는 앤터프라이즈 애플리케이션이다.
앤터프라이즈 애플리케이션은 대규모의 복잡한 데이터를 관리하는 애플리케이션을 말한다.
엔터프라이즈 애플리케이션은 많은 사용자의 요청을 동시에 처리해야 하므로 서버 성능과 안정성이 중요하다.
그렇기에 나타난 스프링 프레임워크는 앞서 설명한 서버성능, 안정성, 보안을 매우 높은 수준으로 제공하는 도구이다.

스프링을 더 쉽게 만들어주는 스프링부트

스프링은 장점이 많은 개발 도구이지만 설정이 매우 복잡하다는 단점이 있습니다. 그래서 스프링을 개발팀에서도 이런 단점을 인식하고 단점을 보완하고자 스프링 부트를 출시했습니다.
스프링 프로젝트를 설정할 수 있고 의존성 세트라고 불리는 스타터를 이용해 간편하게 의존성을 사용하거나 관리할 수 있습니다. 스프링 부트는 개발자가 조금 더 비지니스 로직 개발에만 집중 할 수 있도록 만들어주는 도구이다.’


스프링 콘셉트 공부하기

제어와 역전과 의존성 주입.

IOC란?

IoC란 Inversion of Contorl 을 줄인 표현이다.
자바코드를 작성해 객체를 생성할 때는 객체가 필요한 곳에서 직접 생성했을 텐데 제어의 역전은 다른 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져와 사용하는 것을 말한다.
예시는 다음과 같다.

1
2
3
public calss A{
    private B b; // 코드에서 객체를 생성하지 않는다. 어디선가 받아온 객체를 b에 할당한다.
}
DI란?

스프링에서는 객체들을 관리하기 위해 제어의 역전을 사용합니다. 그리고 제어의 역전을 구현하기 위해 사용하는방법이 DI입니다.
DI 는 Dependency Injection을 줄인표현이고, 직역하면 의존성 주입입니다.

DI는 어떤 클래스가 다른 클래스에 의존한다는 뜻입니다.
다음 예제는

1
2
3
4
5
public class A{
    //A에서 B를 주입받는다.
    @Autowired
    B b;
    }

여기에서 사용하는 @Autowired라는 애너테이션은 스프링 컨테이너에 있는 빈이라는 것을 주입하는 역할을 합니다.
빈은 쉽게말해 스프링 컨테이너에서 관리하는 객체를 말합니다.
이렇게 코드를 작서앻도 프로글매은 잘 작도앟는데 , 스프링 컨테이너라는 곳에서 객체를 주입했기 때문입니다.


빈과 스프링 컨테이너

스프링 컨테이너란?

스프링 컨테이너는 빈을 생성하고 관리합니다. 빈이 생성되고 소멸되기까지의 생명주기를 이 스프링 컨테이너가 관리를 한다.

빈이란?

앞에서 본 코드에서 B가 바로 빈이다, 스프링은 빈을 스프링 컨테이너에 등록하기 위해 xml 파일설정, 애너테이션 추가 등의 방법을 재공합니다.
예를 들어 MyBean이라는 클래스에 @Component 애너테이션을 붙이면 MyBean 클래스가 빈으로 등록됩니다. 이후 스프링 컨테이너에서 이 클래스를 관리하는 데, 클래스 이름의 첫 글자를 소문자로 바꿔 관리합니다. 따라서 MyBean클래스의 이름은 myBean입니다

1
2
3
4
@Component //클래스 MyBean으로 등록
public class MyBean{

}

쉽게 생가하면 스프링에서 제공해주는 객체라고 생각하면된다.


관점지향프로그래밍

스프링의 중요한 개념으로 AOP가 있습니다.
AOP란 Aspect Oreineted Programming을 줄인 표현입니다. 직역하면 관점 지향 프로그래밍, 넒은 의미로는 프로그래밍에 대한 관심을 핵심 관점, 부가 관점으로 나누어서 관심 기준으로 모듈화 하는 것을 의미합니다. 핵심 관점 코드에만 집중할 수 이쎅 될 뿐만 아니라 프로그램의 변경과 확장에도 유연하게 대응할 수 있어 좋다.


이식 가능한 서비스 추상화

PSA(Portable Service Abstraction)을 줄인 표현이다. 스프링에서 제공하는 다양한 기술들을 추상화해 개발자가 쉽게 사용하는 인터페이스를 말합니다.


Leave a comment