Spring
⦁ 우리나라에서는 전자정부 표준 프레임워크의 기반기술로서 쓰이고 있다.
⦁ JAVA의 웹 프레임워크로 JAVA 언어를 기반으로 사용한다.
JAVA로 다양한 어플리케이션을 만들기 위한 프로그래밍 틀이라 할 수 있다.
⦁ 프로젝트를 진행하다 보면 아무리 분업을 해도 분명 중복되는 코드가 있기 마련이다.
Spring은 이런 중복코드의 사용률을 줄여주고, 비즈니스 로직을 더 간단하게 해줄 수 있다.
⦁ Spring을 사용하면 다른 사람의 코드를 참조하여 쓰기 편리한데 이말의 의미는
오픈소스를 좀더 효율적으로 가져다 쓰기 좋은 구조라는 것이다.
⦁ 결론적으로 Spring이란 JAVA 기술들을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임 워크이다.
프레임워크 (Frame Work)
⦁ 프레임 워크는 어떠한 목적을 달성하기 위해 복잡하게 얽혀 있는 문제를 해결하기 위한 구조이자 약속이며,
소프트웨어 개발에 있어서 하나의 뼈대 역할을 한다.
⦁ 프레임 워크는 자주 쓰일 만한 기능들을 한데 모아 놓은 유틸(클래스)들의 모음(집합)이라고 정의할 수 있다.
⦁ 설계의 기반이 되는 부분을 기술한 확장 가능한 기반 코드와 사용자가 이 코드를 자기 입맛대로 수정,
확장하는데 필요한 라이브러리 이 두가지 요소가 통합되어 제공되는 형태이다.
⦁ 사용자가 이 기반 코드를 이용해 일정 수준 이상의 품질을 보장받는 코드를,
비교적 빠른 시간에 완성 및 유지 보수할 수 있는 환경을 제공해주는 솔루션이다.
⦁ 즉 프레임 워크는 기본적인 설계나 필요한 라이브러리는 알아서 제공해줄꺼니깐
개발자는 만들고 싶은 기능을 구현하는데 집중해라는 취지에서 만들어진 것이다.
⦁ 개발자가 구현하고자 하는 기능을 쉽게 제공해줄수 있다는 점에서 프레임 워크는 라이브러리와 비슷한 면이 있다.
프레임워크 와 라이브러리 차이점
⦁ 라이브러리는 개발자가 프로그램을 짜다가 라이브러리가 필요한 순간에 인지하고 라이브러리를 직접 추가해야겠다는
생각이 들었을때 가져다 쓰는 것이다. 라이브러리는 프로그램 기능 구현에만 도움을 줄 수 있다.
⦁ 하지만 프레임 워크는 필요한 라이브러리와 기능 구현에 필요한 설계도 틀을 함께 제공해준다.
⦁ 설계도 틀이란 확장 가능한 기반코드, 재사용 가능한 형태의 협업화된 클래스와 같은 뜻이다. 사용자가 세세하게
신경쓰지 않아도 빠르게 기능을 확장하거나 유지보수할 수 있게 해주는 구조에 대한 가이드라인이라 할 수 있다.
즉, 기반이 되는 부모 클래스라 생각하면된다.
⦁ 개발자가 동일한 라이브러리를 쓰는 동일한 기능의 프로그램을 사용할때, 프레임 워크를 사용하면 클래스 관계 구조나, 데이터를 처리하는 절차, 프로그램이 화면에 그려지는 방식 등 일부 틀을 함께 제공 받을 수 있다.
즉, 프레임 워크는 라이브러리+설계도가 함께 온다.
Spring 주요 특징
- Spring은 개발을 더 쉽게 해주는 프로그램 틀이다.
개발을 더 쉽게 해주는 기술들이 Spring에 존재하는데, IoC, Di, AOP 등등이 있다.
- 개발을 더 쉽게 해주는 것들 중 몇가지를 알아보겠다.
1. IoC(Inversion of Control, 제어 반전)
⦁ 개발자는 JAVA 코딩시 new 연산자, 인터페이스 호출, 데이터 클래스 호출 방식으로 객체를 생성하고 소멸시킨다.
⦁ IoC란 인스턴스 (객체)의 생성부터 소멸까지 객체 생명주기 관리를 개발자가 하는게 아닌
스피링(컨테이너)가 대신 해주는 것을 말한다.
⦁ IoC는 개발자가 실수할 수 있는 생명주기 관리를 대신 해준다.
⦁ 프로젝트의 규모가 커질수록 객체와 자원을 이용하는 방법이 더 복잡해지고
어디서 코드가 꼬일지 모르는 것을 Spring의 IoC는 자동으로 관리해준다.
⦁ 즉, 제어권이 개발자가 아닌 IoC에게 있으며 IoC가 개발자의 코드를 호출하여 그 코드로 생명주기를 제어하는 것이다.
2. DI(Dependency Injection, 의존성 주입)
⦁ 프로그래밍에서 구성요소 간의 의존 관계가 소스코드 내부가 아닌 외부의 설정파일을 통해 정의되는 방식이다.
⦁ 코드 재사용을 높여 재사용을 높여 소스코드를 다양한 곳에 사용할 수 있으며 모듈간의 결합도도 낮출 수 있다.
⦁ 쉽게 말하자면 게임 캐릭터라는 하나의 객체가 존재하는데, 그 객체를 더 잘 이용하기 위해서 무기, 방패 등 아이템을
가져와 결합시키는 것이다. 이 객체는 무기와 방패를 뺐다 꼈다 자유자재로 할 수 있으며
아이템을 갈아끼우는데 어떤 상황에 구애받지도 않는다.
⦁ JAVA에서 데이터를 저장하고 가져오는 기능을 외부의 Oracle Database를 사용할 수도 있고,
JDBC, iBatis, JPA 등 다른 프레임 워크를 이용해 짤 수도 있다. 이때 Spring을 이용하면 그때마다
필요한 부분을 뺐다 꼈다 하면서 적절한 상황에 필요한 기능을 해낼 수 있다.
3. AOP(Aspect Object Programming, 관점 지향 프로그래밍)
⦁ 로깅, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리 할 수 있다.
⦁ 각각의 클래스가 있다고 가정하자. 각 클래스들은 서로 코드와 기능들이 중복되는 부분이 많다. 코드가 중복될 경우
실용성과 가독성 및 개발 속도에 좋지 않다. 중복된 코드를 최대한 배제하는 방법은 중복되는 기능들을
전부 빼놓은 뒤 그 기능이 필요할때만 호출하여 쓰면 훨씬 효율성이 좋다.
⦁ 즉, AOP는 여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용성을 높여주는 프로그래밍 기법이다.
4. POJO(Plain Old Java Object) 방식
⦁ POJO는 Java EE를 사용하면서 해당 플랫폼에 종속되어 있는 무거운 객체들을 만드는 것에 반발하여 나타난 용어이다.
⦁ 별도의 프레임 워크 없이 Java EE를 사용할 때에 비해 인터페이스를 직접 구현하거나 상속받을 필요가 없어 기존 라이브러리를 지원하기 용이하고, 객체가 가볍다.
⦁ 즉, getter/setter를 가진 단순한 자바 오브젝트를 말한다.
1. 상단 메뉴에 Projects > Spring Initializr
2.
위 이미지와 같이 선택해준다!
project : Gradle Project선택
Language : Java 선택
Packagign : Jar 선택
Dependencies > ADD DEPENDENCIES > Thymeleaf / Spring Web 둘다 선택
자바에서 . 은 덩어리(폴더)다
Group : 프로젝트이름 (= 패키지 = 폴더 = 카테고리)
Package name은 위 Group에 입력한 이름을 따라간다.
Jar : 다른프로젝트를 다른곳에서 불러오면 Jar로 확장자이름이 되어있다.
MVC (model view controller) : 모델 = 코드의 덩어리, 뷰=눈에보이는것, 컨트롤러=모델하고 뷰 사이에서 컨트롤해주는것
3. GENERATE 버튼 누르고 zip파일 다운로드 받고, 압축푼 후 vscode에서 폴더열기
4. spring Boot Extension Pack 다운로드받아주기
5. DemoApplication.java 실행해주기
spring이 멋지게 뜨면서
tomcat , 8080 이 하단에 보이는 것을 확인 할 수 있다.
java\com\example\demo
여기에 폴더를 더 만들수있음
실행하면 bin이라는 폴더 생긴다.
6. static에서 index.html 생성
7. 실행해보면 hello!가 잘 나오는 것을 확인 할 수 있다.
정리 참고 원본 링크
https://sambalim.tistory.com/67
https://jerryjerryjerry.tistory.com/62
'STUDY > SpringBoot' 카테고리의 다른 글
[SpringBoot] 22-07-28 SpringBoot 간단 게시판 예제 ☑ (0) | 2022.07.29 |
---|---|
[SpringBoot] MVC(Model·View·Contoller) 정리✔ [1] (0) | 2022.07.29 |
[SpringBoot] Spring Framework 개념 정리✔ (0) | 2022.07.28 |
[SpringBoot] 22-07-28 SpringBoot 전체 이해하기 ☑ (0) | 2022.07.28 |
[SpringBoot] 22-07-28 IntelliJ에서 SpringBoot 시작하기 (0) | 2022.07.27 |