멘붕 ㅋㅋㅋㅋ

안되던게 갑자기 된다..ㅋㅋ

 

일단 중간에 놓쳤던 부분

 

pom.xml에 의존성 모듈을 처음에 추가하니 intellij 기준으로 글자가 빨간색이 뜨는 것이 아닌가...

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>

의존성 모듈을 따로 reimport 해주는 기능이 있는줄 몰랐었다.

 

저거 해주고 나니 괜찮아지더라

 

그리고 그 이후에 했던 것들

1. jstl version 정보를 추가하고 컴파일 한 것.

그런데 후에 지우고 해봐도 잘 된다 ㅋㅋㅋ(뭐지)

 

2. SpringBootApplication을 Run 한 것

intellij에서 run 방법이 2개가 있다.

 

Shift + F10

Ctrl + Shift + F10

 

내가 알고 있는 저 둘의 차이는 기존에 컴파일 했던걸 Run했던 것과 현재 켜져있는 것을 Run하는 것이라고 알고 있는데, 혹시 몰라 일단 적어봤다.

 

진짜 특이한건 이전에 안되던 곳에서도 잘 작동이 된다는 것... 코드 하나 안고쳤는데..ㅋㅋㅋㅋ

 

저 버전을 명시한 후 컴파일 한 번 했었던게 영향을 미쳤던게 아닐까 생각이 된다.

(gradle로 명시해놓은 것 보니깐 버전 정보가 다 명시가 되어 있더라)

 

해당 uri도 빨간색이었는데 어느 순간 초록색으로 바뀌었다.

 

참고 : jaystevency.tistory.com/19

 

[SpringBoot] #1 IntelliJ 에서 spring boot 시작하기

Spring Boot Project 개발 환경 Dev OS : Mac Sierra 10.12.3 IDE : IntelliJ IDEA 2016.2.4 Build #IU-162.2032.8, built on September 9, 2016 java : jdk 1.8 본 게시글은 박재성님의 spring-boot, JPA 질문/..

jaystevency.tistory.com

무작정 해보는 스프링 부트..ㅎ

 

스터디를 시작하고 나서 무작정 나만의 서버를 만들어보자! 하고 시작하게 되었습니다.

 

그럼 레츠 고오오

 

옛날에는 이클립스를 많이 썻었는데 IntelliJ 인터페이스가 너무 깔끔해서 IntelliJ로 갈아탔다.

 

학생 버전은 무료니깐~ 

 

각설하고

 

인텔리제이에서 한 번 손쉽게 Spring Boot 프로젝트를 만들어보자.

 

IntelliJ IDEA 2019.3.1
Java 8

더보기

면접 볼 때 Java 8 버전이 이전 버전들과 어떤 차이가 있냐고 물어봤었던 적이 있다.

 그래서 그 기억에 한 번 찾아봤다.

 

  • Lambda Expression 추가
  • Streams 인터페이스 추가
  • Default Method 추가

여기서 내가 아는건 Lambda Expression이 추가 되었다는 것..?

Lambda Expression은 함수를 생성하지 않고 함수를 쓸 수 있게 해주는 것이다.

 

Streams 인터페이스의 경우는 무엇인가 하니 리스트의 반복 연산을 stream().filter()를 활용하여 코드의 동작을 한눈에 볼 수 있게 해주는 것.

 

Default Method는 interface에서 사용되는 건데, 기존에는 interface에 method를 선언할 때 method만 선언할 수 있지 이에 대한 기능은 선언할 수 없었다. 하지만 이 기능이 생기면서 interface에서 선언한 method에도 기능을 추가할 수 있게 되었다는 것.

 

Default method를 만든 이유는 '하위 호환성' 때문이라고 한다.

 

1. 프로젝트 생성하기

Spring Initializr 선택 후 Next~

 

ArtifactID : 보통 Name(프로젝트 ID)와 동일하게 설정

Type : Maven Project

Java Version : 8 (11로 하니깐 IntelliJ 업데이트 하라더라 싫어서 안한다. 그리고 Java 11은 유료잖아. 8 먼저 써보자 ㅋㅋ)

더보기

Maven Project?

메이븐 프로젝트 구조와 내용을 기술하는 선언적 접근방식의 오픈소스 빌드 툴 입니다. 컴파일과 동시에 빌드를 수행할 수 있으며 테스트를 병행하거나 서버측 디플로이 자원을 관리할 수 있는 환경을 제공합니다.

라는데...응?

즉, 요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 네트워크를 통해서 라이브러리들을 자동으로 다운받아줍니다.

이걸 보니 이해가 된다.

실제로 프로젝트를 만든 후에 dependencies 정보를 확인해보면 프로젝트를 생성할 당시 체크했던 항목들이 들이pom.xml에 들어와 있는 것을 알 수 있다.

 

추가 정보

+ Type : Maven - 프로젝트 빌드 및 의존성 관리에 Maven 을 사용합니다. Gradle을 선택할 수도 있습니다.

+ Packaging: Jar - 패키징을 Jar로 하도록 설정합니다. War로도 설정할 수 있습니다.
+ Java Version: 8 - 자바는 1.8을 사용합니다.
+ Language: Javav - 언어는 Java를 사용합니다. Kotlin을 선택할 수도 있습니다.
+ Group com.tistory.offbyone - 자신에게 맞는 값을 넣으면 됩니다. 보통 도메인을 사용합니다.
+ Artifact: spring-boot-test - Mave 아티팩트명인데, 이것이 프로젝트명이 됩니다.
+ Version: 0.0.1-SNAPSHOT - 프로젝트의 버전입니다.
+ Description: Demo project for Spring Boot - 프로젝트 설명입니다.
+ Package : com.tistory.offbyone.springboot - 초기 소스들이 만들어질 기본 패키지명 입니다.

 

dependencies를 추가해주고 next

더보기

Developer Tools

이놈은 상당히 유용한 놈이라고 한다.

Chrome의 LiveReload와 같이 사용할 경우 프로젝트 파일을 저장하면 무조건 새로 컴파일해서 서버를 다시 껐다 킬 필요가 없다고 한다. 개꿀이 아닌가 꼭 설치하자 ㅋㅋ

 

Spring Web

RESTful, Spring MVC를 활용하여 web을 만들어 준다고 한다.

일단 가장 기본적인거 같으니 이놈을 한 번 써보자

 

Template Engine- Mustache

템플릿 엔진이란 템플릿 양식과 특정 데이터 모델에 따른 입력 자료를 합성하여 결과 문서를 출력하는 소프트웨어이다.

많은 코드를 줄일 수 있고(HTML에 비해 간단하다.), 재사용성이 높고(똑같은 디자인 페이지에 보이는 데이터만 바뀌는 경우가 굉장히 많다), 유지보수가 용이하다.

 

느낌은 알겠는데 직접 사용해봐야 할 듯 하다.

 

더보기

Spring MVC?

 

Model, View, Controller를 분리한 디자인 패턴의 일종이다.

 

다른 블로그 포스팅을 살짝 봤는데... 뭔가 한 번에 이해하기는 어렵다. 이건 따로 공부해서 포스팅 해봐야할 듯 하다.

이렇게 하면 프로젝트 완성!


2. index.html 파일 만들어서 띄워보기

resouce-static에 index.html 파일을 만들어보자

시작은 무조건 Hello World~

localhost:8080

출력 완료


3. DevTools + LiveReload 적용하기

이놈을 이용하면 서버를 다시 재시작 하지 않고도 프로젝트에서 변경된 정보를 저장만으로 반영시킬 수 있다.

 

1. Ctrl + Shift + A : compiler 입력

 

2. Build project automatically 클릭 -> OK 클릭

 

3. Ctrl + Shift + A : registry 입력

 

4. compiler.automake.allow.when.app.running 체크 박스 클릭 -> Close 클릭

5. 크롬에서 LiveReload 확장 프로그램 검색해서 다운로드 해주면 끗

 

6. index.html 데이터를 바꿔보면 약간의 딜레이는 있지만 F5를 누르면 바뀌는 것을 확인할 수 있다.

Day2가 되면 회사가 망하게 된다!

항상 Day1을 유지하게 하기 위한 '제프 베조스'의 철학이 담겨있다.

 

책에서 가장 기억에 남는 것은 바로 '고객중심적인 마인드'이다.

 

정말 철저하게 단기적인 손실보다 고객의 신뢰롤 훨씬 더 중요하고 가치있게 여기며, 말뿐만이 아닌 실제 행동으로 보여주는 사례들을 보니 이렇게 성장할 수 있었던 이유를 알 수 있었다.

 

1. 핑크 에어팟의 QC문제로 인해 배송이 지연될 것이라는 들은 담당자가 나라면 어떻게 했을 것인가?

당연스럽게 '이러이러한 사유로 인해 배송이 지연될 것 같습니다'라고 공지를 올릴 것이라고 일반 사람들은 생각했을 것이다.

하지만? 아마존에서는 소매상에게서 핑크 에어팟 4000개를 구매해 배송 일정을 맞췄다...ㅎ진짜 대단하지 않나?ㅋㅋ

 

2. VOD 서비스를 이용하다 불편을 느낀 고객이 클레임을 걸기도 전에 선제적으로 보상을 제공했다.

이런 시스템을 구축하고, 실제 실행하고 있는 것이 정말 고객의 신뢰를 가장 중요하게 생각하고 있구나 라는 것을 느낄 수 있었다.

 

 

'' 카테고리의 다른 글

[책] 수학의 아름다움  (0) 2019.06.04

+ Recent posts