안녕하세요! 백엔드 공부를 위한 스프링를 배우고자 합니다
저도 강의 들으면서 하나하나 따라가는 거니까 같이 따라가봐요!
1. 스프링부트를 위한 환경 만들기 및 설치
1. java 11 버전 설치(버전에 맞는거 설치하면 됨, 맥은 mac 윈도우는 windows) : 가입해야 설치 가능
(https://www.oracle.com/kr/java/technologies/javase/jdk11-archive-downloads.html0
2. IDE : IntellJ 나 이클립스 설치, Ultimate로 설치
- intellJ의 경우 Communtity 제한적 기능 제공이나 사용하는데 지장 없음, 그리고 요즘 이클립스보다 intellJ를 현업에서 많이 쓰는 추세임
3. 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성 (https://start.spring.io/)
- 요즘 추세는 Gradle Project
- SNAPSHOT은 아직 만들고 있는 버전이므로 예) 2.5.0 이렇게 뒤에 영어가 붙어있지 않으면 정식 버전이므로 이 중에 최신 버전을 선택하면 된다!
- group은 원래 기업 도메인, GroupId는 자신의 프로젝트를 식별해주는 고유 아이디
- artifact는 프로젝트명, ArtifactId는 버전 정보를 생략한 이름(jar)
- GroupId : GroupId는 자신의 프로젝트를 식별해주는 고유 아이디. 'com.lee.web' 과 같이 인터넷 주소를 뒤집어 써놓은 형태.
- 어떤 라이브러리를 땡겨서 쓸거냐
- 웹을 만들거라 spring web이랑, html을 만들어주는 템플릿 엔진 : thymeleaf 클릭해서 추가(안보이면 검색창이용) 후 generate해서 다운되는 파일 압출풀어주기
4. intellJ 실행
- open버튼을 눌러 아까 압축 푼 파일에 build.gradle를 열어줌
- open as project 눌러서 파일 열어주기(좀 오래걸릴 수도)
- 만약 에러 하단에 unknown host 'downloads.gradle-dn.com'. you may need to adjust the proxy settings in gradle. enable gradle 'offline mode' and sync project learn about configuring http proxies in gradle 라는 에러가 뜨면 밑에 빨간색 네모 해둔 곳에 새 모양? 나온거 눌러주면 에러가 사라지기도 함
- TMI : 안드로이드 프로그래밍이랑 인텔이랑 너무 비슷해서 좋았음(안드로이드 프로그래밍은 안드로이드 앱을 만드는 툴인데 학교에서 배운 거라고는 안드로이드 프로그래밍이랑 자바, 아두이노, C언어 밖에 없는데 익숙함이라도 느껴서 다행)
- 메인 : java 파일과 resources : 자바를 제외한 것들, 테스트 : 테스트 코드
2. intellJ 설명, 프로젝트 환경설정
1. 소스트리 설명
scr => main : java(자바파일)과 resources(자바파일을 제외한 파일), test : 테스트 코드, 나중에 현업시 중요함
버전이랑 라이브러리 설정하는 곳
dependencis는 라이브러리를 안에 넣어주는 것, 그 라이브러리를 mavenCentral()이라는 곳에서 받아오겠다 라는 뜻, 라이브러리는 무수히 많고 서로 연관되어 있음
2. 실행
1) main 옆에 초록색 화살표 실행을 누르면 결과창에
2) 웹페이지에 localhost::8080을 쳐보면 에러가 뜨면 성공
3) 실행중지를 하고 다시 들어가보면
3. setting : ctrl + alt + s(단축키)
3. 라이브러리
4. View 설정 - welcome 페이지 만들기
1. resources에 static에 새로운 파일 만들기로 index.html을 만들어주면 이게 바로 웹페이지 처음 들어갔을 때 나오는 페이지임(welcome 페이지)
2. 그리고 html를 작성 복붙을 해줌
<!DOCTYPE HTML>
<html>
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
Hello
<a href="/hello">hello</a>
</body>
</html>
3. localhost:8080에 들어가보면
* 참고로 스프링 부트는 생태계가 너무 커서 검색 능력이 제일 중요함
4. tip) 예를 들어 welcome 페이지를 만들고 싶다
1) spring.io에 들어감
2) project => spring boot => learn
3) spring boot features를 클릭
4) ctrl + F 눌러서 welcome 쳐봄
5. View 설정 - thymeleaf 템플릿 엔진 사이트
1. thymeleaf 공식 사이트
2. 스프링 공식 튜토리얼
3. 스프링부트 메뉴얼
6. View 설정 - 동작화면 예시
1. package 만들기
2. 자바 파일을 만든다
3. 자바파일에 코드를 넣어준다
package hello.hellospring.control;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data","hello!");
return "hello";
}
- 무조건 @Controller를 해줘야 함
- 여기서 GetMapping의 get은 gethost의 get을 뜻하는 거임
- key : data , 값은 : hello
- return "hello" : templates 안에 hello.html을 찾아감
4. templates 안에 hello.html 파일을 만들어줌
5. hello.html 소스 넣기
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
</body>
</html>
결과
6. 화면 동작 그림
1) helloController에서 아래의 부분을 실행해주는데
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data","hello!");
return "hello";
2) return하는 hello는 templates 안에 hello.html을 찾아감
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술의 인프런 강의를 기반으로 들음
7. 빌드하고 실행하고 예제(spring 프로젝트를 윈도우 cmd창에서 빌드하고 실행하기)
1. cmd창을 켜고, 스프링 프로젝트가 있는 폴더로 이동(cd로 이동)
2. gradlew 명령어 실행(아래 순서대로)
1) gradlew.bat
2) gradlew build
3. 실행파일(.jar) 찾아가기[cd build, dir]
cd libs, dir
4. 실행 : java -jar 파일명
git bash와 연동하여 nix 계열 명령어를 사용하는 것을 추천한다고 다른 블로그에서 봄
다음편은 spring 02편과 git bash 연결하기에 대해 작성하려 합니다!
이글은 인프런 + 다른 블로거님 글 참고해서 공부하고자 작성합니다!
'스프링입문 > 입문' 카테고리의 다른 글
의존성 주입 3가지 방법 - (생성자 주입, Field 주입, Setter 주입) (0) | 2024.11.10 |
---|---|
스프링 빈을 등록하는 두 가지 방법(@Component, @Bean) (1) | 2024.11.09 |
@PreDestroy 어노테이션 (2) | 2024.09.26 |
스프링 입문 02편 IntelliJ IDEA와 Git Bash 연동과 스프링 입문 (0) | 2022.01.11 |
안녕하세요. si 회사 소속 sm LMS 팀에 소속중인 1년차 백엔드 개발자입니다😀 함께 나누고 성장하는 것을 좋아해요. 언제든 디스코드나 구글 메일로 질문해도 됩니다!
⭐ 잘못된 내용은 댓글 적어주세요 :)