1. spring 배경
EJB(Enterprise JavaBeans)에서 문제가 되었던 부분을 해결하기 위해 비 침투적인(non-invasive) 방식을 도입하였고, 엔터프라이즈 애플리케이션 개발을 좀 더 쉽게 하기 위한 목적으로 만듦.
ref. https://scroogy.atlassian.net/wiki/spaces/SPRING/pages/8847424
이 때, 오픈 소스 프로젝으로 스프링이 나왔음. 스프링은 ejb 를 쓰지 않고도 엔터프라이즈급 어플리케이션 개발이 가능하도록 하기 위해 나온 것임. (ejb3 스펙은 사용하기에 많이 쉬워졌지만 이미 그 이전에 스프링이 나오면서 널리 확산되어 쓰이기 시작함) 결국 당시에 복잡했던 ejb 를 사용하지 않아도 되고, 그냥 j2se 를 사용하면서 트랜젝션과 보안도 지원 받을 수 있고, java Beans 스펙에 정의된 재사용성도 보증해 주는 프레임웍으로 탄생한 것.
Spring은 Java 기반의 프레임워크로서 여러 모듈로 구성되어있다. 하지만 Spring은 단순 프레임워크를 넘어 자신만의 철학을 지닌다. 즉, 프레임워크와 철학을 합쳐 Spring이라 부른다. Spring은 일종의 Container 역할을 하는 프레임워크로 사용자가 필요한 모듈을 꽂아 사용할 수 있게 해준다. “틀이 되어 주겠다.”
ref. https://kisukpark.wordpress.com/2013/08/29/spring-mvc-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90/
스프링을 공부하다 보면 경량 컨테이너라는 개념을 챙겨야하는데, 경량 컨테이너라는건 아래 설명을 참고하고, 대표적으로 사용되는 경량 컨테이너는 Docker가 있지.
WAS에서 Container 3개를 띄워서 사용중인 것도 이 경량 컨테이너 개념이야.
컨테이너란?
Spring은 하나의 프레임워크이다. 그런데 왜 Spring 컨테이너, IoC 컨테이너라는 말을 사용할까? 그렇다면 컨테이너의 정의는 무엇인가?
Servlet 컨테이너, EJB 컨테이너라고 말하는 것을 종종 들어봤을 것이다. 컨테이너는 보통 인스턴스의 생명주기를 관리하며, 생성된 인스턴스들에게 추가적인 기능을 제공하도록하는 것이라 할 수 있다.
다시말해, 컨테이너란 당신이 작성한 코드의 처리과정을 위임받은 독립적인 존재라고 생각하면 된다. 컨테이너는 적절한 설정만 되어있다면 누구의 도움없이도 프로그래머가 작성한 코드를 스스로 참조한 뒤 알아서 객체의 생성과 소멸을 컨트롤해준다.
마지막으로 DI(Dependency Injection) 개념만 더 챙기면 나머지 Bean이나 다른 것들은 어렵지 않게 넘길 수 있을듯.
DI는 일단 이 블로그를 참고하면 느낌은 올거야. 나머지는 실습해보면서 익히면 될듯함
2. 눈에 익혀두면 괜찮은 자료
아래 것들은 그냥 정독을 한 번만 해도 뼈가되고 살이 되는 자료들인것 같아
이런 자료들을 몇 번만 살펴보면 전체적으로 어떻게 돌아가는지 이해가 갈 수도 있어
Spring boot와 docker를 이용한 msa -slideshare
Spring Framwork - Feature, module에 대해서
3. 추천 도서
1) spring계의 수학의 정석급 책
토비의 스프링(교보문고 링크) - 총 2권이지만 1권만 읽어도 충분하다는 평가. 엄청 심도있다.
2) spring boot을 한다면,
가장 빨리 만나는 스프링 부트 (교보문고 링크) - 이거 읽고나면 이전에 말한 웹 프로젝트를 만들어서 가볍게 해볼 수 있어
내가 보유하고 있는 책이 가장 빨리 만나는 스프링 부트, 스프링 인 액션(교보문고 링크), 스프링 4 코딩공작소(교보문고 링크)가 있으니 필요하면 카톡하고
4. 마지막으로
만약에 가볍게 '프로젝트 하나 해봐야지'라고 생각하면 spring boot를 하고, 제대로 한번 만들어봐야지 하면 spring을 하고.
왜냐하면 Spring을 깊게 하려면 러닝커브가 좀 있는데 그 복잡도를 확 낮춰서 만들어 놓은게 Spring boot니깐 Spring boot로도 맛은 볼 수 있어
'소프트웨어 > Spring Boot' 카테고리의 다른 글
[Spring Boot] maven install and build. (0) | 2016.07.13 |
---|---|
[Spring Boot] maven install and build. (0) | 2016.07.07 |
[Spring Boot] spring boot java.lang.RuntimeException: java.lang.reflect.InvocationTargetException (0) | 2016.07.06 |
[Spring Boot] Create and Play project (0) | 2016.07.06 |
[Spring Boot] init project (0) | 2016.07.05 |