한국에서는 1995년에 JAVA가 출시되고, 2000년도에 들어서서는 PC보급율이 높아지면서 웹 사용자도 크게 증가하고, Web도 폭발적으로 성장하는 시기가 온다. 이때까지는 웹개발을 'CGI'를 이용해서 개발했었는데 멀티쓰레드가 안되서 요청이 올때마다 프로세서를 생성하는 방식으로 작동하기 때문에, 처리 속도와 확장성 면에서 한계가 있었고, 멀티쓰레드를 지원하는 자바서블릿을 기반으로한 'EJB'웹개발방식이 도입되었다. 이때 JAVA 개발자의 수요가 증가했고, 지금까지도 JAVA는 인기있는 언어로 대규모 엔터프라이즈 시스템 및 웹 어플리케이션 개발에 많이 사용되고 있다.
'EJB'는 설정이 복잡해서 사용하기 어려웠는데 2004년 'Spring 1.0'이 출시되면서 훨씬 심플해진 개발 방식을 느끼고 큰 인기를 받게 된다.
그리고 웹 사이트의 수는 급증했지만 개발자가 개발을 마치고 회사를 떠나면 유지보수의 어려움이 생겨났다. 사람마다 개발하는 방식이 다르기 때문에 파악하기가 쉽지 않았기 때문이다. 그래서 이때 프레임워크가 등장하게 된다. 프레임워크를 이용하면 같은 방식으로 정형화 된 방식으로 개발하기 때문에 다른 개발자가 봐도 이해하기가 쉬우니 유지보수가 쉬워지고 기본 구조가 만들어져 있는 상황에서 코드를 작성하므로 생산성도 증가한다.
이후 스프링 프레임워크는 계속 개발되어 새로운 버전이 출시되었고, 2014년에는 설정이 간편한 'Spring Boot'가 등장했고 현재는 스프링은 5.3버전, 스프링부트는 3버전까지 나왔다.
간략하지만 java웹개발의 역사를 배우니 유지보수의 중요성과 상대적으로 쉬운 스프링으로 개발에 입문하게 되어 행운이라는 생각이 들었다. 코드스테이츠에서는 스프링부트를 기반으로 수업을 진행하지만 추가로 스프링 기본기도 쌓고 싶다.
이 그림에서 POJO는 Spring에서 사용하는 핵심 개념들에 둘러 싸여져 있는 모습이다. 이는 POJO라는 것을 IoC/DI, AOP, PSA를 통해서 달성할 수 있다는 것을 의미한다.