
1️⃣ 개요
백엔드 개발에 사용되는 언어와 프레임워크는 정말 다양하다.
Python - Django, JS - Node.js, Java - Spring 등 여러 종류가 있다.
물론 자신이 재미있고 잘 맞는 언어와 프레임워크를 선택하여 공부를 하는게 일반적이다.
나는 지금까지 공부하면서 Java 에 큰 흥미를 느꼈다.
그래서 코테 준비도 비교적 널리 사용되는 Python 이나 C++ 로 하려다 마음을 바꾸었다.
그래서인지 자연스럽게 나는 Java -> Spring 으로 공부 방향을 잡았다.
사실 처음에 Spring 이라는 거대한 프레임워크를 공부할 때 어디서부터 시작해야될지, 나에게 맞는지조차 몰랐다.
광고는 아니고 김영한님의 무료 스프링 강의를 보고 웹서비스의 전반적인 흐름을 배웠다.
아무래도 익숙한 Java 언어로 진행되어 금방 따라갈 수 있을 줄 알았지만 완전 틀린 생각이었다.
어렵긴 했지만 그래도 차근차근 따라가며 흥미를 느꼈고, 꽤 재미있다고 생각했다.
그래서 바로 다음 유료 강의를 결제하여 열심히 듣고 있다.
앞으로 Java 뿐만 아니라 Spring 에 대한 내용도 추가하여 올릴 생각이다.
오늘은 Spring 이란 무엇인지 공부한 내용을 적어보려 한다.
2️⃣ Spring Framework
Spring 공식 문서에 따르면 Spring Framework 는 모든 종류의 배포 플랫폼에서 최신 Java 기반 엔터프라이즈 애플리케이션을 위한 포괄적인 프로그래밍 및 구성 모델을 제공한다.
Spring 의 핵심 요소는 바로 "애플리케이션 수준의 인프라를 지원" 한다는 것이다.
이는 잠깐 Java 기술의 역사를 살펴보면 얼마나 강력한 기술인지 알 수 있다.
Spring 이라는 기술이 자리 잡기 이전, Java 에서 널리 사용되던 기술은 "EJB (Enterprise Java Bean)" 이라는 기술이었다. 이는 기업 수준 환경의 시스템을 구현하기 위한 서버 측 컴포턴트 모델이다.
이때까지만 해도 굉장히 획기적인 기술이었으나, 그럼에도 단점은 존재하였다.
우선 큰 단점으로 객체 지향적이지 않았다. 그 결과 프로그램 모델이 굉장히 복잡해질 수 밖에 없다.
객체 지향의 특징이 무엇인가? 추상화, 다형성, 상속, 캡슐화이다.
그 중 다형성은 객체 지향의 핵심이라고도 할 수 있는데, 이를 지키지 않는다면 코드의 변경, 확장 등이 어려울 것이다.
또한 자동화된 테스트가 매우 어렵거나 불가능하였다. 이는 개발 생산성을 저하시키고, 오류가 발생했을 때 원인 등을 찾기 쉽지 않게 된다.
이렇게 널리 통용되던 EJB 의 단점을 보완하기 위해 등장한 것이 바로 "Spring Framework" 이다.
이는 EJB 을 사용하지 않고고품질의 확장 가능한 애플리케이션을 개발할 수 있음과, 거대한 인프라를 구축할 수 있을 정도의 높은 기술력을 보여준다.
"Spring" 이라는 이름은 EJB 를 사용하던 시절, 어렵고 추운 겨울이 지나 따뜻한 봄이 왔다는 의미로 지어졌다.
3️⃣ 특징
- 핵심 기술 : 종속성 주입, 이벤트, 리소스, 유효성 검사, 데이터 바인딩, 유형 변환, SpEL, AOP
- 테스트 : mock object, TestContext Framework, Spring MVC Test, JUnit
- 데이터 액세스 : 트랜잭션, DAO 지원, JDBC, ORM, Marshalling XML
- 통합 : 원격, JMS, JCA, JMX, 이메일, 스케쥴링, 캐시
- 언어 : Kotlin, Groovy, Java
- 웹 기술 : Spring MVC, Spring WebFlux
4️⃣ 필수 기술 및 관련 기술
- Spring Framework
- Spring Boot
- Spring Data
- Spring Session
- Spring Security
- Spring Cloud
- Spring Batch
- Spring REST Docs
5️⃣ Spring Framework 의 핵심 개념
Spring Framework 는 Java 기반의 프레임워크로, 객체 지향을 따라 객체 지향 언어를 가진 강력한 장점과
특징을 살려내는 프레임워크이다. 즉, Java 가 가진 "객체 지향 언어" 라는 장점을 극대화시켜주는 프레임워크이다.
Spring 이 기존 EJB 의 단점을 단번에 보완할 수 있었던 이유는 바로 객체 지향을 따른다는 것이다.
6️⃣ Spring Boot
Spring Boot 는 Spring 사용을 편리하게 하기 위해 지원해주는 툴이다.
기존에는 복잡한 설정을 대부분 프로그래머가 직접 해줘야했지만, Spring Boot 를 사용하면 훨씬 간단하게
프로젝트 시작과 설정을 모두 할 수 있다.
이는 단독으로 실행 가능한 Spring 애플리케이션을 생성하고, Tomcat 과 같은 웹 서버가 내장되어있어 별도로 서버를 설치할 필요가 없다.
7️⃣ 공식 사이트
다음은 Spring 공식 사이트이고, 자세히 설명이 나와있으니 궁금하다면 들어가보는 것을 추천한다.
Spring | Home
Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform.
spring-website.pages.dev
Spring Framework 에 대한 설명이 잘 나와있다.
https://spring.io/projects/spring-framework
Spring | Home
Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform.
spring-website.pages.dev
다운로드는 아래 사이트에서 할 수 있다.
Spring Tools 4 is the next generation of Spring tooling
Largely rebuilt from scratch, Spring Tools 4 provides world-class support for developing Spring-based enterprise applications, whether you prefer Eclipse, Visual Studio Code, or Theia IDE.
spring.io
8️⃣ 마치며
그동안 객체 지향 프로그래밍을 공부한 것은 아무것도 아니라는 것을 깨달았다.
그래서 이번 기회에 김영한님의 강의를 들으며 Java 기초부터 깊게 파볼 생각이다.
물론 유료 강의기에 모든 내용을 똑같이 공개할 수는 없지만, 공부한 내용을 바탕으로 내가 습득한 내용을 정리하여 포스팅 할 예정이다. 만약 문제가 될 시 삭제하겠다.
이곳 저곳 찾아보니 Java 개발자로서 Spring 이 정말 중요하다고 하였으나 그 이유는 알지 못했다.
또한 지금까지 생각없이 당장 눈 앞에 놓인 문제만 해결하기 위한 코드를 작성하고 있다는 것을 알게 되었다.
전체적인 프로그램의 흐름을 생각하는 방법, 객체 지향 원칙을 잘 지키면서 코드를 작성하는 방법 등
시간이 많이 걸리겠지만 좋은 프로그램, 좋은 코드를 작성하기 위해 많은 노력을 해야겠다.
출처 : 김영한 - 스프링 핵심 원리(기본편), Spring 공식 사이트

1️⃣ 개요
백엔드 개발에 사용되는 언어와 프레임워크는 정말 다양하다.
Python - Django, JS - Node.js, Java - Spring 등 여러 종류가 있다.
물론 자신이 재미있고 잘 맞는 언어와 프레임워크를 선택하여 공부를 하는게 일반적이다.
나는 지금까지 공부하면서 Java 에 큰 흥미를 느꼈다.
그래서 코테 준비도 비교적 널리 사용되는 Python 이나 C++ 로 하려다 마음을 바꾸었다.
그래서인지 자연스럽게 나는 Java -> Spring 으로 공부 방향을 잡았다.
사실 처음에 Spring 이라는 거대한 프레임워크를 공부할 때 어디서부터 시작해야될지, 나에게 맞는지조차 몰랐다.
광고는 아니고 김영한님의 무료 스프링 강의를 보고 웹서비스의 전반적인 흐름을 배웠다.
아무래도 익숙한 Java 언어로 진행되어 금방 따라갈 수 있을 줄 알았지만 완전 틀린 생각이었다.
어렵긴 했지만 그래도 차근차근 따라가며 흥미를 느꼈고, 꽤 재미있다고 생각했다.
그래서 바로 다음 유료 강의를 결제하여 열심히 듣고 있다.
앞으로 Java 뿐만 아니라 Spring 에 대한 내용도 추가하여 올릴 생각이다.
오늘은 Spring 이란 무엇인지 공부한 내용을 적어보려 한다.
2️⃣ Spring Framework
Spring 공식 문서에 따르면 Spring Framework 는 모든 종류의 배포 플랫폼에서 최신 Java 기반 엔터프라이즈 애플리케이션을 위한 포괄적인 프로그래밍 및 구성 모델을 제공한다.
Spring 의 핵심 요소는 바로 "애플리케이션 수준의 인프라를 지원" 한다는 것이다.
이는 잠깐 Java 기술의 역사를 살펴보면 얼마나 강력한 기술인지 알 수 있다.
Spring 이라는 기술이 자리 잡기 이전, Java 에서 널리 사용되던 기술은 "EJB (Enterprise Java Bean)" 이라는 기술이었다. 이는 기업 수준 환경의 시스템을 구현하기 위한 서버 측 컴포턴트 모델이다.
이때까지만 해도 굉장히 획기적인 기술이었으나, 그럼에도 단점은 존재하였다.
우선 큰 단점으로 객체 지향적이지 않았다. 그 결과 프로그램 모델이 굉장히 복잡해질 수 밖에 없다.
객체 지향의 특징이 무엇인가? 추상화, 다형성, 상속, 캡슐화이다.
그 중 다형성은 객체 지향의 핵심이라고도 할 수 있는데, 이를 지키지 않는다면 코드의 변경, 확장 등이 어려울 것이다.
또한 자동화된 테스트가 매우 어렵거나 불가능하였다. 이는 개발 생산성을 저하시키고, 오류가 발생했을 때 원인 등을 찾기 쉽지 않게 된다.
이렇게 널리 통용되던 EJB 의 단점을 보완하기 위해 등장한 것이 바로 "Spring Framework" 이다.
이는 EJB 을 사용하지 않고고품질의 확장 가능한 애플리케이션을 개발할 수 있음과, 거대한 인프라를 구축할 수 있을 정도의 높은 기술력을 보여준다.
"Spring" 이라는 이름은 EJB 를 사용하던 시절, 어렵고 추운 겨울이 지나 따뜻한 봄이 왔다는 의미로 지어졌다.
3️⃣ 특징
- 핵심 기술 : 종속성 주입, 이벤트, 리소스, 유효성 검사, 데이터 바인딩, 유형 변환, SpEL, AOP
- 테스트 : mock object, TestContext Framework, Spring MVC Test, JUnit
- 데이터 액세스 : 트랜잭션, DAO 지원, JDBC, ORM, Marshalling XML
- 통합 : 원격, JMS, JCA, JMX, 이메일, 스케쥴링, 캐시
- 언어 : Kotlin, Groovy, Java
- 웹 기술 : Spring MVC, Spring WebFlux
4️⃣ 필수 기술 및 관련 기술
- Spring Framework
- Spring Boot
- Spring Data
- Spring Session
- Spring Security
- Spring Cloud
- Spring Batch
- Spring REST Docs
5️⃣ Spring Framework 의 핵심 개념
Spring Framework 는 Java 기반의 프레임워크로, 객체 지향을 따라 객체 지향 언어를 가진 강력한 장점과
특징을 살려내는 프레임워크이다. 즉, Java 가 가진 "객체 지향 언어" 라는 장점을 극대화시켜주는 프레임워크이다.
Spring 이 기존 EJB 의 단점을 단번에 보완할 수 있었던 이유는 바로 객체 지향을 따른다는 것이다.
6️⃣ Spring Boot
Spring Boot 는 Spring 사용을 편리하게 하기 위해 지원해주는 툴이다.
기존에는 복잡한 설정을 대부분 프로그래머가 직접 해줘야했지만, Spring Boot 를 사용하면 훨씬 간단하게
프로젝트 시작과 설정을 모두 할 수 있다.
이는 단독으로 실행 가능한 Spring 애플리케이션을 생성하고, Tomcat 과 같은 웹 서버가 내장되어있어 별도로 서버를 설치할 필요가 없다.
7️⃣ 공식 사이트
다음은 Spring 공식 사이트이고, 자세히 설명이 나와있으니 궁금하다면 들어가보는 것을 추천한다.
Spring | Home
Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform.
spring-website.pages.dev
Spring Framework 에 대한 설명이 잘 나와있다.
https://spring.io/projects/spring-framework
Spring | Home
Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform.
spring-website.pages.dev
다운로드는 아래 사이트에서 할 수 있다.
Spring Tools 4 is the next generation of Spring tooling
Largely rebuilt from scratch, Spring Tools 4 provides world-class support for developing Spring-based enterprise applications, whether you prefer Eclipse, Visual Studio Code, or Theia IDE.
spring.io
8️⃣ 마치며
그동안 객체 지향 프로그래밍을 공부한 것은 아무것도 아니라는 것을 깨달았다.
그래서 이번 기회에 김영한님의 강의를 들으며 Java 기초부터 깊게 파볼 생각이다.
물론 유료 강의기에 모든 내용을 똑같이 공개할 수는 없지만, 공부한 내용을 바탕으로 내가 습득한 내용을 정리하여 포스팅 할 예정이다. 만약 문제가 될 시 삭제하겠다.
이곳 저곳 찾아보니 Java 개발자로서 Spring 이 정말 중요하다고 하였으나 그 이유는 알지 못했다.
또한 지금까지 생각없이 당장 눈 앞에 놓인 문제만 해결하기 위한 코드를 작성하고 있다는 것을 알게 되었다.
전체적인 프로그램의 흐름을 생각하는 방법, 객체 지향 원칙을 잘 지키면서 코드를 작성하는 방법 등
시간이 많이 걸리겠지만 좋은 프로그램, 좋은 코드를 작성하기 위해 많은 노력을 해야겠다.
출처 : 김영한 - 스프링 핵심 원리(기본편), Spring 공식 사이트