기술/Spring

[Spring Study] 스프링 프레임워크 개요

leatherjean 2018. 10. 22. 17:40

1. 스프링 개요

1-1 : 스프링 프레임워크

스프링 프레임워크는 주요기능으로 DI, AOP, MVC, JDBC 등을 제공한다. 처음하는 사람들에게는 낯설 수 있다.

  • 자바로 처음 웹 개발을 하는 사람들은 JSP를 많이 접해봤을거다. Spring 하기 전에 JSP 먼저 해보는게 낫다.

  • MVC모델, 뷰, 컨트롤러구조화하는 것이고, JDBC디비 관련이다. DI주입기능이다. 어떤 기능을 만들어서 필요할때마다 주입해서 사용하는 것. AOP관점지향 프로그래밍이라고 하는데, 스프링에서 공통 부분을 떼어내서 주요부분에 붙였다가 뗏다가 하면서 사용하는 것이다.

  • 프레임워크의 유무를 네비게이션 유무비유. 운전자(프로그래머)는 네비게이션이 있으면 운전만 하면 된다. 프레임워크는 수많은 기능들을 추상화 시켜놓고 틀로 만든다. 그리고 그걸 이용할 수 있게 하는 것이다. 추상적인 틀을 곧 프레임워크라고 한다.

1-2 : 스프링 프레임워크 모듈

앞에서 말한 틀의 하나하나를 모듈이라고 한다. 스프링에는 Spring-core, Spring-aop, Spring-jdbc, Spring-tx, Spring-webmvc 모듈을 제공하고 있다.

  • Spring core : 스프링의 핵심인 DI와 IoC를 제공

  • Spring aop : AOP구현 기능 제공

  • Spring jdbc : 데이터베이스를 쉽게(적은 양의 코드) 다룰 수 있는 기능 제공

  • Spring tx : 스프링에서 제공하는 트랜잭션 관련 기능 제공

  • Spring webmvc : 스프링에서 제공하는 컨트롤러와 뷰를 이용한 스프링MVC 구현 기능 제공

  • 스프링을 사용하기 위해서는 가장 핵심인 core를 사용해야하고, 데이터베이스 연동하면 jdbc 사용해야하고, 웹 구현하려면 mvc도 사용해야한다.

스프링 프레임워크에서 제공하고 있는 모듈을 사용하려면 모듈에 대한 의존설정을 개발 프로젝트에 XML 파일 등을 이용해서 개발자가 직접하면 된다.

라이브러리를 주입해서 사용하는 것과 비슷하다. 하지만 개발자가 직접 다운받을 필요는 없고 명시만 해주면 자동으로 import 시켜준다.

1-3 : 스프링 컨테이터(IoC)

스프링에서 객체를 생성하고 조립하는 컨테이너로, 컨테이너를 통해 생성된 객체를 빈(Bean)이라고 부른다.

  • 자바를 보통 OOP 언어라고 한다. 객체에는 속성과 기능이 들어있다. 외부에서 사용만하면 된다. 스프링도 마찬가지다.

  • 스프링도 객체를 만든다. 필요할 때 마다 객체가 가지고 있는 속성과 기능을 사용하면 된다.

  • XML 문서를 통해 객체가 만들어진다. Spring 컨테이너는 XML 문서를 이용해서 만들어진 객체를 담고 있다.

  • Spring에서는 이걸 Object라고 하지 않고 Bean이라고 한다. 그것을 개발문서로 꺼내서 사용하는 구조다.

  • Spring에서는 IoC를 컨테이너라고 한다.

스프링 컨테이너에 대하여 좀 더 자세히 알아보자

보통 스프링 프로젝트에서 resources는 프로젝트에 필요한 자원들이 담기는 곳이다. 거기에는 applicationContext.xml 이 있는데 이것이 컨테이너 역할을 한다. 그리고 스프링은 이 컨테이너 안에 객체(Bean)를 모아둔다. 스프링이 객체를 갖다가 메모리에 로딩을 하긴 하는데, 스프링 컨테이너를 IoC하는 큰 그릇을 만들어두어야 한다. 내가 필요한 객체를 그 그릇에 다 구현해놓고 필요할 때마다 그 그릇에서 해당 객체를 꺼내와서 사용한다. 이 객체를 Bean이라고 한다. Bean에는 id가 있고 class의 풀네임이 있다. 이렇게 사용하면 new를 사용하지 않고 객체를 불러올 수 있게 된다. applicationContext라는 파일에 의해서 객체가 생성이 되고 메모리에 로딩이 된다는 말이다. 그리고 이것은 메모리에서 특별히 관리되는 스프링 컨테이너 부분에 로딩이 된다.

객체를 가져오기 위해서는 스프링 컨테이너에 먼저 접근을 해야한다. GenericXmlApplicationContext 의 파라미터로 classpath:applicationContext.xml 이라고 적어주고 객체를 생성한다. 그리고 bean id를 매개변수로 넣어 getBean() 함수를 호출한다. 데이터타입은 클래스를 적어주면 된다. 그리고 객체를 반환받아서 사용하면 된다.

스프링에서는 좀 더 효율적이고 다른 업무에 집중할 수 있도록, xml을 통해서 bean을 만들어 접근할 수 있게 해놓았다. 이게 일반 자바와의 가장 큰 차이점이다. 요즘은 xml 말고 어노테이션 기능을 이용해서 주로 사용한다.

pom.xml은 스프링 모듈들을 가져오는 곳이다.


참고 강의 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC_renew/