Luver Duck 2022. 8. 30. 23:32

프레임워크(FrameWork)

- ???

 

** 라이브러리(Library)

- 자주 사용되는 유용한 기능을 하는 class들을 미리 만들어 놓고 기능별로 분류하여 제공하는 패키지 파일

- API는 이러한 클래스들의 코드를 문서로 제공하는 것.

 

Spring Framework

- Java / Kotlin 기반의 웹 프레임워크

- 특징

1) 의존성 주입 (Dependency Injection, DI)

    - 의존성 : 변경사항이 있는 경우 서로에게 영향을 많이 주는 관계

    - 사용자가 객체를 직접 생성하는게 아니라 외부(Spring)에서 생성해서 사용자에게 주입

2) 제어 역전 (Inversion Of Control, IOC)

    - 사용자의 제어권(객체 생성, 메소드 호출 등)을 다른 주체에게 넘기는 것

    - Spring에게 제어를 위임하여 Spring이 만든 객체를 주입 -> 의존성 객체의 메소드 호출

3) POJO (Plain Old Java Object) 방식

4) 관점 지향형 프로그래밍 (Aspect Oriented Programming, AOP)

5) 생명주기 관리

 

Spring Boot Framework

- Spring Boot Starter

   프로젝트에 설정해야 할 다수의 의존성들을 사전에 미리 정의해서 의존성 조합 제공

- Embedded Tomcat (내장 톰캣)

   Spring Boot Framework에는 Tomcat이 내장되어 있다

- AutoConfiguration (자동 환경설정)

Spring Framework의 기본 프로젝트 세팅의 상당 부분을 자동 설정(AutoConfiguration)

 

** Servlet

- Client의 요청을 처리하고 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 Java 프로그램

 

** Servlet Container

- Servlet을 관리해주는 Container

- Client의 요청(Request)을 받아주고 응답(Response)할 수 있게 웹 서버와 소켓으로 통신

 

 ** Tomcat

- Java 기반의 Servlet Container이자 웹 서버

 

STS (Spring Tool Suite)

- Spring Framework를 지원하는 Eclipse 기반 통합 개발 환경(Integrated Development Environment, IDE)

 

필수 설정 (Eclipse와 동일)

0. 설정창 진입

Window - Preferences 선택

 

 

1. Encoding 설정

encoding 검색 - General - Workspace - Text file encoding에서 UTF-8로 변경

 

 

2. Font 설정

font 검색 - General - Appearance - Colors and Fonts에서 Basic - Text Font에서 원하는 폰트 및 글자 크기 변경

 

 

3. JDK 설정

jdk 검색 - Installed JREs - Add 선택 - JDK가 설치된 경로를 추가

** JDK(Java Development Kit) : Java 개발자용 도구

** JRE(Java Runtime Environment) : Java 실행 환경

** JDK는 JRE를 포함하고 있다

 

 

4. GitHub commit 설정

git 검색  - Version Control(Team) - Git - Configuration - Add Entry 선택 후 GitHub 이메일과 닉네임 설정

 

 

5. GitHub와 연동

1) 우측 상단에 Open Perspective 선택 

 

 

2) Git 선택

 

 

3) Git Repositories에서 Clone a Git repository 선택

 

 

4) 불러올 GitHub repository URL, GitHub 아이디 및 토큰 입력

 

 

Spring Starter 프로젝트 생성

1. New - New Spring Starter Project 선택

 

- Service URL : 해당 주소(Spring initializer)로 연결하여 프로젝트를 생성 (대신 생성해준다)

- Name : 프로젝트명

- Type : 빌드 프레임워크 선택 (Maven / Gradle)

- Packaging : 내장 서버(Embeded Tomcat)만 사용할 것인지 Jar(Java Archive /

                      외장 서버도 사용할 것인지War (Web Archive)

- Java Version : Java 버전 선택 (8 / 11 / 17 / 18)

- Language : Java 기반 언어 선택 (Java / Kotlin / Groovy)

- Group : 프로젝트를 생성하는 조직명

- Artifact : 해당 조직에서 만든 프로그램명

- Description : 상세 설명

- Package : 패키지명, 보통 Group과 Artifact를 합쳐서 만든다

 

2. Spring Starter Project의 Dependency 설정

- 사용할 라이브러리 선택

 

- Spring Boot DevTools

  • Property Defaults (속성 기본값)
  • Automatic Restart (자동 재시작)
    파일 수정 후 저장을 하면, Classpath에 존재하는 파일의 변경을 감지하고, 자동으로 서버를 재시작
  • Live Reload (라이브 리로드)
    JS 파일을 수정하면 자동으로 브라우저를 새로 고침
  • Global Settings (전역 설정)
  • Remote Applications (원격 애플리케이션)

 

- Spring Web

 

 

Spring Starter Project의 구성

 

 

src

 src/main - 배포될 프로젝트에 포함되는 내용들이 위치하는 곳

         ● src/main/java - Java Source File이 위치하는 곳

                  프로젝트명Application.java - Spring Boot App이 시작하는 main 파일

                  ServletInitializer.java - Web Container에 배포될 경우 운영 설정 파일

         ● src/main/resources - 설정 파일과 정적 컨텐츠가 위치하는 곳

                 ● static - 정적 컨텐츠 파일의 위치 ex) 이미지, 스크립트 등     

                 ● templates - Thymeleaf 등 HTML 기반 템플릿 파일의 위치

                 ● application.properties - Spring Boot 중앙 설정 파일(yml로 치환 가능)

         ● src/main/webapp - (구) 설정 파일의 위치, (현) JSP 파일의 위치

 src/test - 배포될 프로젝트에 포함되지 않는 테스트 코드가 위치하는 곳

 

target

- maven build의 결과물이 생성되는 위치

- 생성할 때마다 파일이 변경되므로 Git과 같은 버전 관리 시스템에서 관리되지 않도록 제외 설정한다

 

help.md

- Spring에서 제공하는 프로젝트 기본 설명서 파일

- Markdown 형식으로 작성되어 있으며 Reference Documentation과 Guides에 대한 Link가 존재한다

 

mvnw

- Maven Wrapper 파일

- 별도의 Maven 설치 없이 프로젝트 내에서 Maven을 사용할 수 있다

   ● mvnw : Linux 계열을 위한 파일

   ● mvnw.cmd : Windows를 위한 파일

 

PORT 번호 변경

1. Oracle DB의 HTTP PORT 번호 변경

- Oracle이 사용하는 PORT 번호

- Oracle Database Listener : 1521

- Oracle Service for Microsoft Transaction Server : 2030

- Oracle HTTP Listener : 8080

 

1) 관리자 계정(system)으로 로그인

2) HTTP PORT 번호 변경 쿼리 실행 - PORT번호에 바꿀 PORT 번호를 입력한다

exec dmbs_xdb.setHttpport(PORT번호);

3) 변경된 HTTP PORT 번호를 확인하는 쿼리

select dbms_xdb.getHttpport() from dual;

 

2. Spring Boot의 PORT 번호 변경

src/main/resources - application.properties에서 Port 번호 8888로 변경

 

 

MVC 패턴

- 프로그램을 Model - View - Controller 로 나누어 개발하는 디자인 패턴

 

Model

- Controller가 호출을 하면 DB와 연동하여 데이터와 연관된 비즈니스 로직을 처리 (CRUD)

 

View

- Controller로부터 받은 Model의 결과값을 사용자에게 화면으로 출력

 

Controller

- Model과 View 사이의 인터페이스(데이터 교환의 중간자) 역할

- 사용자로부터 View에 요청이 있으면 Controller는 해당 업무를 수행하는 Model을 호출하고

  Model이 업무를 모두 수행하면 다시 결과를 View에 전달하는 역할을 합니다.

 

** DTO (Data Transfer Object)

DTO는 계층 간(Controller, View, Business Layer) 데이터 교환을 위한 자바 빈즈(Java Beans)를 의미한다.

DTO는 로직을 가지지 않는 데이터 객체이고 getter/setter 메소드만 가진 클래스를 의미한다.

- 필드

- 기본 생성자

- getter & setter

 

Controller

- MVC 패턴(Model-View-Controller)에서 Controller를 의미

- 클래스명 위에 @Controller라는 annotation을 작성하여 해당 클래스가 컨트롤러임을 명시

 

Annotation

@Controller 클래스명 위에 작성하며 해당 클래스가 Controller 역할을 하게 된다
@RequestMapping("주소명") 요청(request)을 특정 클래스나 메소드에 mapping한다
@ResponseBody 메소드의 return 값(응답, response)을 HTTP Response body에 담는 역할
@RequestParam 요청 파라미터에 바인딩되어야 할 매개 변수를 나타냄

 

 

Spring03quiz - src/main/java - com.kh.spring03.controller - QuizController

Spring04quiz - src/main/java - com.kh.spring04.controller - QuizController

 

spring04까지