1. github 회원가입

https://github.com/

 

GitHub: Where the world builds software

GitHub is where over 83 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat...

github.com

 

2. git 설치

https://git-scm.com/downloads

 

Git - Downloads

Downloads macOS Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but there are several third-party tools for users looking for a platform-specific exp

git-scm.com

 

3. 내 프로젝트 git 연동

프로젝트 경로로 이동하여 Git Bash Here를 클릭

 

아래 코드를 순차적으로 입력합니다.

이대 주소에는 github에서 신규 repository를 생성 후 해당 주소를 붙여줍니다.

git init
git add .
git commit -m "환경세팅완료 v1"
git remote add origin 주소
git push origin master

 

 

강의 주소 : https://youtu.be/O13vCHjKKuk

- 5강의 마지막 MySQL 연결에 대한 강의

 

필자는 application.properties 였던 파일을 application.yml 파일로 변경하고 아래 강의를 따라했습니다.

 

강의 주소 : https://youtu.be/G6fgEiI_pEA

- MySQL 한글 설정 및 연결


아래 주소를 참조

https://getinthere.tistory.com/17

 

스프링부트 with JPA 블로그 3강 - MySQL 한글 설정 및 연결

1. MySQL 한글 설정 my.ini 파일 MySQL 재시작 [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' init_conn..

getinthere.tistory.com

 

 

강의 주소 : https://youtu.be/GuHhQP0897s

- 프로젝트 패키지 생성에 대한 주의점, 프로젝트 실행해보기

 

※ 주의 : 패키지 생성시 com.cos.blog 하위가 아닌 com.cos.test와 같이 만들면 안됩니다.

스프링은 처음에 로드되면서 컴포넌트 스캔을 합니다.

컴포넌트 스캔은 어떤 패키지가 있을 때, 해당 패키지 이하를 메모리에 로드하는 것을 말합니다.

 

BlogControllerTest.java 생성 후 메서드를 생성합니다.

package com.cos.blog.test;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 스프링이 com.cos.blog 패키지 이하를 스캔해서 모든 파일을 메모리에 new하는 것은 아니구요.
 * 특정 어노테이션이 붙어있는 클래스 파일들을 new해서(IoC) 스프링 컨테이너에 관리해줍니다.
 * @author ukssmac
 *
 */
@RestController
public class BlogControllerTest {
	
	@GetMapping("/test/hello")
	public String hello() {
		return "<h1>hello spring boot</h1>";
	}
}

이후 패키지 마우스 우클릭 후 Run AS > Spring Boot App을 실행합니다.

정상 실행시 http://localhost:8080/test/hello로 접근시 아래와 같은 내용이 표출됩니다.

 

 

 

강의 주소 : https://youtu.be/n33ao_cbhsU

- 스프링 프로젝트 생성 및 의존성 설정

 

1. Spring Starter Project로 프로젝트를 생성합니다.

2. 프로젝트 생성시 추가 할 의존성들을 선택합니다.

설치되는 의존성들은 아래와 같습니다.

  - Spring Boot DevTools

  - Lombok

  - Spring Data JPA

  - MySQL Driver

  - Spring Security

  - Spring Web

 

이외에 OAuth2 Client는 추후 세팅하겠습니다.

템플릿 엔진으로는 JSP를 사용 할 예정입니다.

 

추가적으로 시큐리티 태그 라이브러리, JSP 템플릿 엔진, JSTL은 pom.xml 파일에서 직접 주입하겠습니다.

 

아래 주소에 자세하게 설명되어 있습니다.

https://getinthere.tistory.com/16

 

강의 주소 : https://youtu.be/rpcoHCXgGnQ

- STS4 웹 개발 환경 세팅

 

1. STS4 JavaEE 플러그인 설치(JSP 웹 개발 환경)

STS 설치 후 JSP 파일을 생성하고자 하면 해당 파일을 생성 할 수 없는데 아래와 같이 Tool을 설치하면 해결됩니다.

* Help > Eclipse Marketplace > eclipse web 으로 검색 > Eclipse Enterpirse Java and Web Developer Tools 다운로드

2. STS4 Javascript 파일 인식 설정

* Window > Preferences > General > Editors > File Associations 에 *.js 형식을 추가합니다.

추가 된 *.js를 클릭 후 아래의 Associated editors 탭에서 Generic Text Editor를 선택 후 우측 Default 버튼을 클릭합니다.

 

3. STS4 폰트 및 인코딩 설정

* Window > Preferences > enc로 검색합니다.

General > Workspace 의 Text file encoding을 UTF-8로 수정합니다.

Web > CSS Files, HTML Files, JSP Files을 UTF-8로 수정합니다.

 

* Window > Preferences > font로 검색합니다.

General > Appearance > Colors and Fonts > Basic > Text Font(Basic 폴더의 최하단 위치) 에서 변경해 줍니다.

저는 강의에 따라 CookeRun 폰트를 받아 적용했습니다.

 

강의 주소 : https://youtu.be/tFkZfw05OmU

STS 설치는 아래 강의로 대체하겠습니다.

 

- 인코딩 타입을 UTF-8로 하는 이유

영어(대문자 소문자 합하여 52개)와 숫자(01234 ...) 특수문자(!@#$? ...)를 전기적 신호(0과 1)로 표현하기 위해서는 약 2^8(256가지)이 최소로 필요합니다.

이와같이 256 경우의 수로 표현 할 수 있는 것을 하나의 문자라 하며 이와같은 문자를 모아놓은것을 아스키 코드표라합니다.

하나의 문자를 표현하는 최소 단위는 8bit이며, 1byte라 합니다.

RAM의 하나의 주소공간은 1byte로 되어있으며, RAM에 하나의 주소공간에 담을 수 있는 데이터는 하나의 문자입니다.

 

그러나, 우리나라의 문자는 1byte로 표현 할 수가 없습니다.(가, 기, 구 ...)

우리나라 문자열을 표현하기 위해서는 최소 2byte가 필요합니다.

또한 중문의 경우는 10만자가 넘으며, 이를 표현하기 위해서는 3byte가 필요합니다.

 

요즘과 같이 전세계적으로 공유되는 사회에서 1byte, 2byte와 같이 3byte보다 적은 문자열 인코딩으로 처리하게 된다면, 중문의 경우는 문자열이 깨지게 됩니다.

이러한 문제를 해결하고자 전세계 표준인 UTF-8이 채택 된 것입니다.

 

 

강의 주소 : https://youtu.be/gm05NxRNoYw

- 윈도우 설정 방법

https://getinthere.tistory.com/15

 

스프링부트 with JPA 블로그 1강 - 환경세팅

1. Oracle JDK 1.8 설치 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html Java SE Development Kit 8 - Downloads Java SE Development Kit 8 Downloads Thank you for downloading..

getinthere.tistory.com

 

- 맥 설정 방법

◇ JDK 1.8 설치

아래 링크로 대체하겠습니다.

https://junesker.tistory.com/11

 

[Mac] MacOS Java JDK 설치 및 환경변수 설정하기

MacOS에서 Java JDK를 설치하려고 한다. openssl 설치를 진행하면서 특정 명령어를 사용하기 위해서 필요한게 Java JDK이기도 하고, MacOS에서 이클립스를 설치해 웹 개발도 같이 진행해야하기 때문에 JDK

junesker.tistory.com

◇ JDK 버전 변경

1. 설치된 JDK 목록 확인

터미널에서 아래와 같이 입력합니다.

/usr/libexec/java_home -V

나는 아래와 같이 3가지 JDK가 검색합니다.

2. 사용하고자 하는 JDK 버전으로 변경

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
source ~/.bash_profile

3. 버전 확인

java -version

 

◇ MySQL

1. MySQL 설치 방법

 

MySQL :: Download MySQL Community Server

Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Linux Fedora Linux - Generic Oracle Solaris macOS Source Code Select OS Version: All Windows (x86

dev.mysql.com

위 링크를 타고 DMG Archive 버전을 다운 받습니다.

(하단에 No thanks, just start my download를 클릭하여 다운로드 받습니다.)

 

다운로드 된 dmg 파일을 더블 클릭하여 순서대로 설치합니다.

(설치시에 비밀번호 꼭! 기억해야합니다.)

설치가 완료되면 Mac의 시스템 환경설정에 들어가면 MySQL이 있으며, Active한 상태로 되어 있는지 확인합니다.

 

2. MySQL 접속

  • Mac의 터미널로 MySQL에 접속할 것입니다.
cd /usr/local/mysql/bin
./mysql -uroot -p

MySQL의 가장 베이스 디렉토리내에 bin 디렉토리에서 mysql 명령을 통해 실행합니다.

초기 비밀번호의 경우는 설치시에 입력했던 비밀번호입니다.

 

폰트 설치, STS 설치, 단축키 설정은 아래 강의를 참조하면 좋을것 같습니다.

 

 

강의 주소 : https://youtu.be/6bhF5o4gAOs

- 응답(Response)하는 방법

 

- 요청 주소에 따른 적절한 컨트롤러 요청(Handler Mapping)

GET요청 => http://localhost:8080/post/1

해당 주소 요청이 오면 적절한 컨트롤러의 함수를 찾아서 실행한다.

 

- 응답

html파일을 응답할지 Data를 응답할지 결정해야 하는데 html파일을 응답하게 되면 ViewResolver가 관여하게 된다.

하지만 Data를 응답하게 되면 MessageConverter가 작동하게 되는데 메시지를 컨버팅할 때 기본전략은 json이다.

 

 

 

 

강의 주소 : https://youtu.be/GCx65TdiA44

 

- DispatchServlet

  주소분배의 목적, 컴포넌트 스캔을 한다.

 

- ApplicationContext가 무엇인가요?

  Context Loader Listener가 root_ApplicationContext파일을 읽어서 공통적으로 써야하는 것들을 메모리에 띄운다.

 

- 스프링 컨테이너

  DispatchServlet에 의해 생성되어지는 수 많은 객체들은 어디에서 관리될까?

 

1. ApplicationContext

    수 많은 객체들이 ApplicationContext에 등록된다. 이것을 IoC라고 한다. IoC란 제어의 역전을 의마한다. 개발자가 직접 new를 통해 객체를 생성하게 된다면 해당 객체를 가르키는 레퍼런스 변수를 관리하기 어렵다. 그래서 스프링이 직접 해당 객체를 관리한다. 이때 우리는 주소를 몰라도 된다. 왜냐하면 필요할 때 DI하면 되기 때문이다. DI를 의존성 주입이라고 한다. 필요한 곳에서 ApplicationContext에 접근하여 필요한 객체를 가져올 수 있다. ApplicationContext는 싱글톤으로 관리되기 때문에 어디에서 접근하든 동일한 객체라는 것을 보장해준다.

 

ApplicationContext의 종류에는 두가지가 있는데 (root-applicationContext와 servlet-applicationContext) 이다.

 

servlet-applicationContext는 ViewResolver, Interceptor, MultipartResolver 객체를 생성하고 웹과 관련된 어노테이션 Controller, RestController를 스캔한다.

================> 해당 파일은 DispatchServlet에 의해 실행된다.

 

root-applicationContext는 해당 어노테이션을 제외한 어노테이션 Service, Repository등을 스캔하고 DB관련 객체를 생성한다. (스캔이란 : 메모리에 로딩한다는 뜻)

================> 해당 파일은 ContextLoaderListener에 의해 실행된다. ContextLoaderListener를 실행해주는 녀석은 web.xml이기 때문에 root-applicationContext는 servlet-applicationContext보다 먼저 로드 된다.

당연히 servlet-applicationContext에서는 root-applicationContext가 로드한 객체를 참조할 수 있지만 그 반대는 불가능하다. 생성 시점이 다르기 때문이다.

 

2. Bean Factory

    필요한 객체를 Bean Factory에 등록할 수 도 있다. 여기에 등록하면 초기에 메모리에 로드되지 않고 필요할 때 getBean()이라는 메소드를 통하여 호출하여 메모리에 로드할 수 있다. 이것 또한 IoC이다. 그리고 필요할 때 DI하여 사용할 수 있다. ApplicationContext와 다른 점은 Bean Factory에 로드되는 객체들은 미리 로드되지 않고 필요할 때 호출하여 로드하기 때문에 lazy-loading이 된다는 점이다.

 

 

 

 

 

강의 주소 : https://youtu.be/YRdS7qcZ8AY

+ Recent posts