-> 반은 맞고 반은 틀리다 !
"겨울이 지나면.. 반드시 봄이 온다! "
spring 이라는 이름의 탄생유래라고 한다!
(전 아직 너무 추운데요 선생님..)
물론 우리는 처음부터 spring을 접했기때문에,
"감히" 예전 개발자분들의 삶을 알지 못했지만,
spring 프레임워크가 나오기 이전에는
EJB 라는 기술을 사용했다고 한다.
근데 이 EJB 기술을 사용하려면 모든 코드가 EJB를 사용하면 거의 모든 코드가
EJB에 의존적으로 코드를 작성해야 하기 때문에
정말 굉장히 지저분 했다고 한다.
( JAVA 의 특징인 객체지향적이지 못함.)
< EJB 를 쓰던 개발자들 >
"아 진짜 EJB 너무 어려운거 아녀?
우리가 시방 java 를 쓰고있는데 java 특징이뭐여 !!
객체지향 아니여?!?!?
이대론 안뎌!! 옛날 자바로 돌아가야혀!!!.
그 아무한테도 종속 안받고 최대한 객체지향적인거 있자녀,,,@@"
그래서
POJO 라는 개념을 도입하여, JAVA의 특징을 몽땅살린,
EJB를 대체하기 위한 Spring이 탄생했다고 한다.
( 시간날 때 POJO 라는 단어도 꼭 짚고 넘어가보자! )
< 이 글을 읽는 독자들 >
아니 옛날 방식이 어려웠다는건 알겠는데,,~~그럼 그렇게 편하다고 말하는 스프링의 특징이 도대체 뭐길래 그래 ?!
Spring은 Java 기반의 오픈소스 Back-end 프레임워크 이다.
여기서 우리는 " Java 기반 " 이라는 말에 집중해야 할 것 이다.
자바를 기반이라고 함은..
자바의 특징을 모두 적용 한다는 것을 의미한다.
즉, 최대한 객체지향적 사고의 구조로 이루어져 있다는 것!
그럼 그 특징을 한번 자세히 살펴보자 !
다음은 spring 공식문서 https://spring.io/projects/spring-framework 안에 있는
스프링의 강력한 특징이다!
Spring은 다른 프레임워크에 비해 다음과 같은 특징을 가진다.
경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
Features
공식문서에 있는걸 그대로 가져와봤다.
- Core technologies: dependency injection, events, resources, i18n, validation, data binding, type conversion, SpEL, AOP.
- Testing: mock objects, TestContext framework, Spring MVC Test, WebTestClient.
- Data Access: transactions, DAO support, JDBC, ORM, Marshalling XML.
- Spring MVC and Spring WebFlux web frameworks.
- Integration: remoting, JMS, JCA, JMX, email, tasks, scheduling, cache and observability.
- Languages: Kotlin, Groovy, dynamic languages.
대충 용어를 정리 해보니
- 핵심 기술: 의존성 주입(DI), AOP, 이벤트, 검증 ..
- 데이터 접근 기술: 트랜잭션, DAO 지원, JDBC, ORM..
- 웹 기술 : Spring MVC..
- 테스트 방법: Mock, Spring MVC Test, WebTest..
뭔가 spring을 공부하면서 많이 들어본 내용 아닌가?
스프링의 이러한 특징들을 자세하게 알아보려면
" " 를 보고오길 바란다!
방금 말한건 Spring 의 특징이고 그럼 Spring Boot 는 도대체 뭐에요? 선생님?
대충이나마 spring 이 어떠한 특징을 가졌는지 간단하게나마 살펴봤다.
그럼 우리가 주로 사용하는 Spring Boot 는 도대체 뭘까?
< Spring Boot >
Spring 에서 한층 업그레이드 된 ,
개발자가 '더욱더' 개발에만 집중할 수 있도록 설계된 프레임워크이다!
개발에만 집중? 이것이 무슨소린가 곰곰히 생각해보니..
다들 프로젝트를 시작하려고, 혹은 진행중에..
환경설정하는데 너무나도 많은 시간과 노력을 써본 경험이 있지않은가?
Spring Boot 는 이러한 개발에 쓸 에너지를
다른곳으로 분산되는 것을 막아주기위해 탄생했다!
< Spring Boot 가 나오기 이전,
Web에 Hello World! 가 잘 출력되는지 확인하려는 spring 교육생들 >
강사 : "자~ Hello World! 다들 작성완료하셨죠?
이제 웹에 잘 적용이 되나 확인 해봅시다!물론 그게 그렇게 호락호락 하지는 않답니다..!
그 전에 저희는 먼저 "외장톰캣" 인 Apache Tomcat 을 설치해서 적용해야해요 ~
톰캣 설치하셨으면 자~ 이제 환경설정부터 다시 해서 포트번호를 설정하고....
어어..~ 거기 학생은 버전 잘못 다운 받으셨어요 ~ (중략)"
교육생들 : "개발자 포기하겠습니다."
다음은 내장톰캣이 특징인 Spring Boot 에서 웹 서버에 잘 나오는지 테스트해 볼 것이다.
< Spring Boot 사용 >
강사 : 자~ hello World 치셨다구요? 오케이~ 그럼 build.gradle 파일에다가
이거 쳐서 적용하시고 ! 세모모양 run 버튼있죠? 그거 한번 실행해봅시다!
>교육생들 : 오.. 어쩌면 나 개발자에 소질 있을지도?
1. pom.xml 파일에 Thymeleaf에 대한 의존성을 추가한다.
2. 뷰 리졸버를 설정한다.
(깊은한숨..)
But!!
"딸깍. 딸깍"
한눈에 봐도 환경설정 및 라이브러리 추가에 대한 손쉬움이 느껴지지 않는가?
웹 애플리케이션을 배포하기 위해서는 .war 파일로 패키징해 배포해야했지만,
스프링 부트는 내장 Tomcat을 지원하기 때문에 웹 애플리케이션을 .jar 파일로 패키징해 웹 애플리케이션을 실행시킬 수 있습니다.
그 외에 배포관련해서도 손쉬움을 느낄 수 있다고 한다!
이렇게 간단하게나마 spring 과 spring boot 의 차이점 및
왜 boot 가 인기가 많은지 실감할 수 있었다!
당장은 아니더라도, 어느순간 필요를 느낄 때가 되면, 꼭 어려운 방법도 접해보길 바란다.
(물론 나 또한)
https://programforlife.tistory.com/68
https://velog.io/@yyy96/Spring